2014-11-21 4 views
-1

현재 사용자가 컨트롤 D를 누를 ​​때까지 파일에 cout을 쓰는 프로그램을 작성 중입니다. 그 후에 터미널에 다시 보내고 싶습니다. 다음은 내 코드 샘플입니다.파일에 cout을 쓰고 터미널에 다시 넣기

freopen(outputfile,"w",stdout); 

for(;;) 
{ 
    if(cin.fail()) //user pressed control-D 
    { 
    break; 
    } 
string s; 
cin >> s; 
cout << s << endl; 
} 

cout << "COMPLETE" << endl; 

"COMPLETE"파일은 여전히 ​​내 파일에 기록됩니다. 어떻게 정상 및 해결 사전

+3

if (cin.fail()) // 사용자가 control-D를 눌렀다. 명시된 조건을 제외하고'cin.fail()'이 참으로 많은 이유가있다 !! –

+0

'freopen'을 사용하지 않으면 표준 출력 스트림이 느슨해집니다. 대신에 스트림 버퍼'cout'을 변경하고, 그것을 뒤에서 바꾸십시오. (이것은 미리'cout'을 사용하고'stdout'을 사용하지 않는다고 가정합니다.) – Deduplicator

답변

0

다시 터미널

덕분에 인쇄되지 루프에서이 그래서 어떤 couts을 중지 할 수 있습니다. 내가 원한 것은 이것이었다

ofstream tempfile; 
tempfile.open ("temp.txt"); 

for(;;) 
{ 
    if(cin.fail()) 
    { 
    break; 
    } 
string s; 
cin >> s; 
tempfile << s << endl; 
} 
tempfile.close(); 
cout << "COMPLETE" << endl; 
관련 문제