有人可以帮我解决这段代码的问题吗?我得到了大量的垃圾价值!
fstream fs("hello.txt");
if(fs.is_open())
{
string s = "hello";
string line;
fs << s;
while(getline(fs,line))
{
cout << line;
}
cin.get();
}
fs.close();
非常感谢,但是当我尝试这样做的时候,我得到同样的垃圾。我正在尝试用世界重写第一个hello并尝试打印该行
fstream fs("hello.txt");
if(fs.is_open())
{
string s = "hello";
string line;
fs << s << endl;
fs.seekg(0);
fs << "world" << endl;
fs.seekg(0);
while(getline(fs,line))
{
cout<<line;
}
cin.get();
}
fs.close();
答案 0 :(得分:3)
fs
后,fs << s
的光标位于文件末尾(需要将数据正确附加到文件中)。
尝试调用fs.seekg(0);
将光标移回开头。
此外,在构建fstream::trunc
时,您可能需要提供fstream::app
或fs
标记。
fstream fs("hello.txt", fstream::in | fstream::out | fstream::trunc);
答案 1 :(得分:0)
如果在运行程序之前hello.txt为空,那么它似乎对我有用。如果文件包含6个或7个以上的字符,那么你的hello world代码将覆盖前6/7个字符,其中“world”后跟行终止符(可能是1或2个字符,具体取决于平台)。该文件的提醒不会被覆盖,随后将由您的getline循环打印。