bso*_*dra 5 c++ iostream ifstream filereader
我在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();
Run Code Online (Sandbox Code Playgroud)
文件的内容是
firstfirst firstsecond secondfirst secondsecond
当我看到输出时,它被打印为
firstfirst firstsecond secondfirst
我期望输出类似于:
fir stf irs tfi .....
而且我看到"第二秒"还没有打印出来.我猜最后一次读取已经满足了eof并且可能没有执行cout.但第一种行为是不可理解的.
提取运算符没有ifsw1w变量大小的概念,并且(默认情况下)将提取字符,直到它命中空格,null或eof.这些可能存储在ifsw1w变量之后的内存位置,如果定义了其他变量,这将导致错误.
要获得所需的行为,您应该可以使用
ifsw1.width(3);
Run Code Online (Sandbox Code Playgroud)
限制要提取的字符数.
| 归档时间: |
|
| 查看次数: |
3911 次 |
| 最近记录: |