Chr*_*ris 2 c++ string stream sstream
我一直在尝试使用C++ stringstream类来做一些相对简单的字符串操作,但是我遇到了get()方法的问题.出于某种原因,每当我按字符提取输出字符时,它会附加最后一个字母的第二个副本.
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main() {
stringstream ss("hello");
char c;
while(!ss.eof()) {
ss.get(c);
cout << "char: " << c << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序的输出是:
char: h
char: e
char: l
char: l
char: o
char: o
Run Code Online (Sandbox Code Playgroud)
任何帮助,你可以给我这个将不胜感激.
在流的末尾ss.eof()
还不知道将很快到达流的结尾,但是后面的字符提取失败.由于提取失败,因为到达了流的末尾,c
因此不会更改.您的程序无法识别ss.get(c)
失败并c
再次打印旧值.
检查是否仍有可从流中读取的字符的更好方法是这样的循环:
while (ss.get(c)) {
cout << "char: " << c << endl;
}
Run Code Online (Sandbox Code Playgroud)