我在尝试几种C++文件读取策略时发现了这个问题。
文件的内容如下:
ifstream ifsw1("c:\\trys\\str3.txt");
char ifsw1w[3];
do {
ifsw1 >> ifsw1w;
if (ifsw1.eof())
break;
cout << ifsw1w << flush << endl;
} while (1);
ifsw1.close();
文件的内容如下:
firstfirst firstsecond secondfirst secondsecond当我看到输出时,它被打印为:
firstfirst firstsecond secondfirst我期望的输出应该像下面这样:
fir stf irs tfi .....此外,我发现"secondsecond"没有被打印。我猜最后一次读取遇到了文件结束符,并且cout可能没有被执行。但第一个行为是不可理解的。
12AB
",并且想将其转换为两个unsigned a, b;
变量,使得a
等于 0x12,b
等于 0xAB。可能可以通过s >> std::hex >> setw(2) >> a;
然后s >> std::hex >> setw(2) >> b
来实现这一点。但是,由于没有适合istream
的相应setw()
操纵符,因此这种方法不起作用。在这种情况下,使用s.width(2)
也无法解决问题。有办法限制解析的符号数量吗? - krokoziabla