在调试别人的代码时,我遇到了 C++fstream
对象之间的交互,通过流运算符输入,ios::app
而我以前不知道。
假设file.txt
存在并包含文本数据。在fstream
其原始上下文中,它是长期存在的,并为输入和输出服务。以下代码未按预期工作(不提供文件输出),已省略错误处理代码:
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
fstream f("file.txt", ios::app);
string in;
f >> in;
cout << in << endl;
f.close();
return 0;
}
将文件打开语句更改为以下内容可解决此问题:
fstream f("file.txt");
这是预期的行为吗?是否不能fstream
使用 ios::app 打开一个对象并期望通过流操作符输入的行为正确?
在 64 位 Linux 上使用 g++ 4.6.3 编译,在 32 位 Windows 7 上使用 mingw-g++ 4.4.1 编译