写入和读取文本文件时的垃圾值

时间:2010-07-06 07:00:22

标签: c++

有人可以帮我解决这段代码的问题吗?我得到了大量的垃圾价值!

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();

2 个答案:

答案 0 :(得分:3)

fs后,fs << s的光标位于文件末尾(需要将数据正确附加到文件中)。

尝试调用fs.seekg(0);将光标移回开头。

此外,在构建fstream::trunc时,您可能需要提供fstream::appfs标记。

fstream fs("hello.txt", fstream::in | fstream::out | fstream::trunc);

答案 1 :(得分:0)

如果在运行程序之前hello.txt为空,那么它似乎对我有用。如果文件包含6个或7个以上的字符,那么你的hello world代码将覆盖前6/7个字符,其中“world”后跟行终止符(可能是1或2个字符,具体取决于平台)。该文件的提醒不会被覆盖,随后将由您的getline循环打印。