2010-07-06 118 views
0

Can有人可以帮我解决这段代码的问题吗?我收到一堆垃圾值!写入文本文件和读取文本文件时的垃圾值

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

非常感谢,但是当我尝试这样做时,我得到的垃圾也是一样的。我试图改写与世界的第一声问候,并试图打印线

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

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

3

fs光标是在文件的最后,你fs << s(这是需要正确的数据追加到文件)后。

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

此外,在构建fs时,您可能需要提供fstream::truncfstream::app标志。

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

非常感谢您,但我编辑了该帖子中显示的代码。现在我得到相同的垃圾值。 – brett 2010-07-06 07:16:46

+0

@brett:不可重复。我在屏幕上获得了“世界”。 (只有在你写完所有内容之后调用'seekg(0)'*)。 – kennytm 2010-07-06 07:27:26

相关问题