我面临一个问题,如何从输入流中读取空格分隔的数据。
假设我们需要输入 J 123 7 3 M。第一个是字母,最后一个是字母。其余的是整数。
vector<int> ints;
vector<char> chars;
stringstream ss;
...
cin >> c
chars.push_back(c);
ss << c;
cin >> i;
while(ss << i) {
ints.push_back(i);
}
...
但是这段代码并不能解决问题。我尝试了很多组合,但仍然没有。
我在想我可以将所有内容都读取为 char,然后将其转换为 int。
我知道有类似的问题,但就我而言,我想在没有字符串而不是动态数组的情况下解决这个问题(可能是动态数组但没有设定长度)。
编辑
我设法通过以下方式阅读了这样的stram:
char first, last;
int i;
std::cin >> first;
std::cout << first;
while(std::cin >> i) {
std::cout << i;
}
std::cin >> last;
std::cout << last;
但是有一个问题:写“F 1 23 2 2 W”会显示F12322@。不知道为什么最后有“@”。有什么想法吗?
编辑2:
std::cin.clear();
在while循环解决问题之后。