2014-11-21 33 views
-1

我目前正在編寫一個將cout寫入文件的程序,直到用戶按下控件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」cout仍在寫入我的文件。我怎樣才能阻止這種所以不是在迴路中的任何COUTS是正常的,並提前

+3

'如果(cin.fail())//用戶按下control-D'有很多原因'cin.fail()'是真的,除了聲明的條件! – 2014-11-21 02:11:43

+0

不要使用freopen,你會丟失標準輸出流。改變流緩衝區'cout'代替,然後交換回來。 (雖然這個前提假設你只使用'cout'而不是'stdout'。) – Deduplicator 2014-11-21 02:14:03

回答

0

解決打印回終端

感謝。我想要的是這樣的

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

for(;;) 
{ 
    if(cin.fail()) 
    { 
    break; 
    } 
string s; 
cin >> s; 
tempfile << s << endl; 
} 
tempfile.close(); 
cout << "COMPLETE" << endl; 
相關問題