2014-11-21 2 views
-1

В настоящее время я пишу программу, которая записывает cout в файл, пока пользователь не нажмет кнопку D. После этого я хотел бы снова отключиться до терминала. Вот пример моего кодаЗапись 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

'if (cin.fail()) // пользователь нажал control-D' Существует множество причин' cin.fail() 'истинно в стороне от указанного условия !! –

+0

Не используйте 'freopen', вы теряете поток стандартного вывода. Вместо этого замените бункер stream-buffer 'cout' и замените его обратно. (Предполагается, что вы используете только 'cout', а не' stdout'.) – Deduplicator

ответ

0

решенных. То, что я хотел, было так

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

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