URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2650
[ Назад ]

Исходное сообщение
"Перенаправление вывода"

Отправлено FrOdO , 11-Мрт-04 14:52 
Hi ALL.

Можно средствами C++ перенаправить стандартные потоки в файл.
Я пытался делать так:

...

logfile.open("filename", ios_base::app);

if(!logfile.is_open()){
  cerr << "Не могу открыть файл filename на добавление\n";
  exit(EXIT_FAILURE);
}

cout = logfile;
...

и получал ошибку компиляции:

/usr/local/include/c++/3.3.3/bits/ios_base.h: In member function `
   std::basic_ios<char, std::char_traits<char> >& std::basic_ios<char,
   std::char_traits<char> >::operator=(const std::basic_ios<char,
   std::char_traits<char> >&)':
/usr/local/include/c++/3.3.3/bits/ios_base.h:671: error: `std::ios_base&
   std::ios_base::operator=(const std::ios_base&)' is private
client_main.cpp:1450: error: within this context


Содержание

Сообщения в этом обсуждении
"Перенаправление вывода"
Отправлено max , 11-Мрт-04 15:16 
>Hi ALL.
>
>Можно средствами C++ перенаправить стандартные потоки в файл.
>Я пытался делать так:
>
>...
>
>logfile.open("filename", ios_base::app);
>
>if(!logfile.is_open()){
>  cerr << "Не могу открыть файл filename на добавление\n";
>  exit(EXIT_FAILURE);
>}
>
>cout = logfile;
>...
>
>и получал ошибку компиляции:
>
>/usr/local/include/c++/3.3.3/bits/ios_base.h: In member function `
>   std::basic_ios<char, std::char_traits<char> >& std::basic_ios<char,
>   std::char_traits<char> >::operator=(const std::basic_ios<char,
>   std::char_traits<char> >&)':
>/usr/local/include/c++/3.3.3/bits/ios_base.h:671: error: `std::ios_base&
>   std::ios_base::operator=(const std::ios_base&)' is private
>client_main.cpp:1450: error: within this context


logfile.open("filename", ios::app);


"Перенаправление вывода"
Отправлено FrOdO , 11-Мрт-04 18:28 

>logfile.open("filename", ios::app);

???
Ругается на присвоение!


"Перенаправление вывода"
Отправлено sas , 12-Мрт-04 04:44 
Добрового времени суток

ofstream log( "mylog", ios::app );
//  запомним, что-бы восстановить когда будет время
streambuf *b = cout.rdbuf( log.rdbuf() );
// сейчас пишем в лог
cout << "AAAAAAAAAAAAAAAAAAAAAAAA!!!!!!";   
// вернули обратно
cout.rdbuf( b );

Удачи
--- sas

>Hi ALL.
>
>Можно средствами C++ перенаправить стандартные потоки в файл.
>Я пытался делать так:
>
>...
>
>logfile.open("filename", ios_base::app);
>
>if(!logfile.is_open()){
>  cerr << "Не могу открыть файл filename на добавление\n";
>  exit(EXIT_FAILURE);
>}
>
>cout = logfile;
>...
>
>и получал ошибку компиляции:
>
>/usr/local/include/c++/3.3.3/bits/ios_base.h: In member function `
>   std::basic_ios<char, std::char_traits<char> >& std::basic_ios<char,
>   std::char_traits<char> >::operator=(const std::basic_ios<char,
>   std::char_traits<char> >&)':
>/usr/local/include/c++/3.3.3/bits/ios_base.h:671: error: `std::ios_base&
>   std::ios_base::operator=(const std::ios_base&)' is private
>client_main.cpp:1450: error: within this context


"Перенаправление вывода"
Отправлено sas , 12-Мрт-04 04:57 
Маленькие исправления:

Доброго

ios::app | ios::out

:)

>Добрового времени суток
>
>ofstream log( "mylog", ios::app );
>//  запомним, что-бы восстановить когда будет время
>streambuf *b = cout.rdbuf( log.rdbuf() );
>// сейчас пишем в лог
>cout << "AAAAAAAAAAAAAAAAAAAAAAAA!!!!!!";   
>// вернули обратно
>cout.rdbuf( b );
>
>Удачи
>--- sas
>
>>Hi ALL.
>>
>>Можно средствами C++ перенаправить стандартные потоки в файл.
>>Я пытался делать так:
>>
>>...
>>
>>logfile.open("filename", ios_base::app);
>>
>>if(!logfile.is_open()){
>>  cerr << "Не могу открыть файл filename на добавление\n";
>>  exit(EXIT_FAILURE);
>>}
>>
>>cout = logfile;
>>...
>>
>>и получал ошибку компиляции:
>>
>>/usr/local/include/c++/3.3.3/bits/ios_base.h: In member function `
>>   std::basic_ios<char, std::char_traits<char> >& std::basic_ios<char,
>>   std::char_traits<char> >::operator=(const std::basic_ios<char,
>>   std::char_traits<char> >&)':
>>/usr/local/include/c++/3.3.3/bits/ios_base.h:671: error: `std::ios_base&
>>   std::ios_base::operator=(const std::ios_base&)' is private
>>client_main.cpp:1450: error: within this context


"Перенаправление вывода"
Отправлено FrOdO , 12-Мрт-04 10:16 
>Добрового времени суток
>
>ofstream log( "mylog", ios::app );
>//  запомним, что-бы восстановить когда будет время
>streambuf *b = cout.rdbuf( log.rdbuf() );
>// сейчас пишем в лог
>cout << "AAAAAAAAAAAAAAAAAAAAAAAA!!!!!!";   
>// вернули обратно
>cout.rdbuf( b );
>
>Удачи
>--- sas
>

It's working, thanks.