讨论/技术交流/求助|问个 IO/

今天做华为机考,acm模式下面输入是一个数组

[1,2,3]

用C++怎么读取呢?
问题太简单就匿名了,但是这我还真的是第一次见到

共 4 个回复

我用java
先substring成1,2,3
再split(",")
最后用trim()去掉空格

2
#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> nums;
    int tmp;
    char ch;
    cin >> ch;
    while (cin >> tmp){
        nums.push_back(tmp);
        cin >> ch;
        if (ch == ']') break;
    }

    for (int tmp : nums){
        cout << tmp << " ";
    }
    cout << endl;
}
1

写法比较笨,想看看大佬们的IO处理,不过我发现华为机考的题目好多字符串处理的,做的好恶心

#include <string>
#include <sstream>
#include <iostream>
#include <vector>
using namespace std;
int main() {
    string input;
    getline(cin, input);
    string temp = input.substr(1, input.size() - 2);
    istringstream iss(temp);
    vector<string> ivec;
    string num;
    while (getline(iss,num, ',')) {
        ivec.push_back(num);
    }
    for (auto& ele : ivec) {
        cout << ele << ends;
    }
}

1

这个数据处理确实挺恶心的。我是用的string处理,以,和]作为数字的分隔符,然后手动实现一个字符串转数字的函数就好了