2010-07-06 10 views
0

이 코드의 문제점을 도와 줄 수 있습니까? 나는 쓰레기 값의 무리를 얻고있다!텍스트 파일에 쓰고 읽을 때 쓰레기 값

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자를 넘으면 hello world 코드가 처음 6/7 문자를 "world"로 겹쳐 쓰고 줄 종결 자 (플랫폼에 따라 1 또는 2자를 사용할 수 있음)를 덮어 씁니다. 파일의 미리 알림은 덮어 쓰지 않으며 이후 getline 루프에 의해 인쇄됩니다.

3

fs의 커서가 파일의 끝에를 인쇄하려고 한 후 fs << s (이 제대로 파일에 데이터를 추가하는 데 필요합니다).

fs.seekg(0);으로 전화를 걸어 커서를 처음으로 되돌립니다.

또한 fs을 구성 할 때 fstream::trunc 또는 fstream::app 플래그를 제공해야 할 수도 있습니다.

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

대단히 감사합니다. 그러나 게시물에 표시된 코드를 편집했습니다. 이제 같은 쓰레기 값을 얻고 있습니다. – brett

+0

@ 브렛 : 재현 할 수 없습니다. 나는 화면에 '세계'를 가지고있다. (''seekg (0)'*은 모든 것을 쓴 후에 만 ​​호출하십시오.) – kennytm

관련 문제