使用C ++从分隔符拆分字符串中提取整数数组

时间:2017-11-25 15:00:22

标签: c++ arrays string

我试图从C ++中的字符串中提取整数序列,该字符串包含一定的分隔符,并使用它们创建数组:

输入采用以下格式:

  

<integer>( <integer>)+(<delimiter> <integer>( <integer>)+)+

示例1 2 3 4; 5 6 7 8; 9 10(此处的分隔符为;

结果应该是三个整数数组,包含: [1, 2, 3, 4][5, 6, 7, 8][9, 10]

我到目前为止尝试使用的是istringstream,因为它已经通过空格拆分了它们,但我没有成功:

#include <iostream>
#include <sstream>

using namespace std;

int main() {
    string token;
    cin >> token;

    istringstream in(token);

    // Here is the part that is confusing me
    // Also, I don't know how the size of the newly created array
    // will be determined

    if (!in.fail()) {
        cout << "Success!" << endl;
    } else {
        cout << "Failed: " << in.str() << endl;
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

我的建议是在';'使用std::getline之前阅读,然后使用std::istringstream解析字符串:

std::string tokens;
std::getline(cin, tokens, ';');
std::istringstream token_stream(tokens);
std::vector<int> numbers;
int value;
while (token_stream >> value)
{
  numbers.push_back(value);
}