我试图从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;
}
答案 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);
}