使用stringstream从c ++中的字符串中提取整数时出现意外重复
Unexpected repetition while extracting integers from string in c++ using stringstream
我正在尝试读取一个文件,其中包含由 space 分隔的整数组成的行。我想将每一行存储为一个单独的整数向量。
所以我尝试逐行读取输入并使用
从中提取整数
stringstream
我提取的代码如下-
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("input.txt","r",stdin);
string line;
while(getline(cin, line)) {
int temp;
stringstream line_stream(line); // conversion of string to integer.
while(line_stream) {
line_stream >> temp;
cout << temp<< " ";
}
cout << endl;
}
return 0;
}
以上代码有效,但它重复了最后一个 element.For 示例,输入文件 -
1 2 34
5 66
输出:
1 2 34 34
5 66 66
我该如何解决这个问题?
因为这个:
while(line_stream) {
line_stream >> temp;
cout << temp<< " ";
}
失败的原因与 while (!line_stream.eof())
失败的原因相同。
当您读取最后一个整数时,您还没有到达流的末尾 - 这将在下一次读取时发生。
下一个读取是未检查的 line_stream >> temp;
,这将失败并保持 temp
不变。
这种循环的正确形式是
while (line_stream >> temp)
{
cout << temp<< " ";
}
我正在尝试读取一个文件,其中包含由 space 分隔的整数组成的行。我想将每一行存储为一个单独的整数向量。 所以我尝试逐行读取输入并使用
从中提取整数stringstream
我提取的代码如下-
#include <bits/stdc++.h>
using namespace std;
int main()
{
freopen("input.txt","r",stdin);
string line;
while(getline(cin, line)) {
int temp;
stringstream line_stream(line); // conversion of string to integer.
while(line_stream) {
line_stream >> temp;
cout << temp<< " ";
}
cout << endl;
}
return 0;
}
以上代码有效,但它重复了最后一个 element.For 示例,输入文件 -
1 2 34
5 66
输出:
1 2 34 34
5 66 66
我该如何解决这个问题?
因为这个:
while(line_stream) {
line_stream >> temp;
cout << temp<< " ";
}
失败的原因与 while (!line_stream.eof())
失败的原因相同。
当您读取最后一个整数时,您还没有到达流的末尾 - 这将在下一次读取时发生。
下一个读取是未检查的 line_stream >> temp;
,这将失败并保持 temp
不变。
这种循环的正确形式是
while (line_stream >> temp)
{
cout << temp<< " ";
}