std::cerr, std::wcerr
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
<metanoindex/>
<tbody> </tbody>| Определено в заголовочном файле <iostream>
|
||
extern std::ostream cerr; |
(1) | |
extern std::wostream wcerr; |
(2) | |
Глобальные объекты std::cerr и std::wcerr выход управления в поток буфера реализации определенного типа (производное от std::streambuf и std::wstreambuf, соответственно), связанные с стандартный поток вывода ошибок C stderr.
Оригинал:
The global objects std::cerr and std::wcerr control output to a stream buffer of implementation-defined type (derived from std::streambuf and std::wstreambuf, respectively), associated with the standard C error output stream stderr.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Эти объекты гарантированно будут построены до первого конструктора статического объекта вызывается и они гарантированно пережить последний деструктор статического объекта, так что всегда можно написать std::cerr в пользовательском коде.
Оригинал:
These objects are guaranteed to be constructed before the first constructor of a static object is called and they are guaranteed to outlive the last destructor of a static object, so that it is always possible to write to std::cerr in user code.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Если
sync_with_stdio(false) было выдано, что это безопасно для одновременного доступа к этим объектам из нескольких потоков для форматированных и неформатированных выход.Оригинал:
Unless
sync_with_stdio(false) has been issued, it is safe to concurrently access these objects from multiple threads for both formatted and unformatted output.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
После инициализации
std::cerr.flags() & unitbuf != 0 (то же самое для wcerr), что означает, что любой выход, отправленные на эти объекты поток сразу же вспыхнул в ОС (через деструктор std::basic_ostream::sentry в).Оригинал:
Once initialized,
std::cerr.flags() & unitbuf != 0 (same for wcerr) meaning that any output sent to these stream objects is immediately flushed to the OS (via std::basic_ostream::sentry's destructor).Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Кроме того,
std::cerr.tie() возвращается &std::cout (то же самое для wcerr и wcout), что означает, что любые операции вывода на std::cerr сначала выполняет std::cout.flush() (с помощью конструктора std::basic_ostream::sentry автора) (начиная с C++11)Оригинал:
In addition,
std::cerr.tie() returns &std::cout (same for wcerr and wcout), meaning that any output operation on std::cerr first executes std::cout.flush() (via std::basic_ostream::sentry's constructor) (начиная с C++11)Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Пример
Выход на стандартный вывод через сегг спугивает в ожидании выхода на сои, а выход на стандартный вывод через забивают не делает
Оригинал:
output to stderr via cerr flushes out the pending output on cout, while output to stderr via clog does not
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Запустить этот код
#include <thread>
#include <iostream>
#include <chrono>
void f()
{
std::cout << "Output from thread...";
std::this_thread::sleep_for(std::chrono::seconds(2));
std::cout << "...thread calls flush()" << std::endl;
}
int main()
{
std::thread t1(f);
std::this_thread::sleep_for(std::chrono::seconds(1));
std::clog << "This output from main is not tie()'d to cout\n";
std::cerr << "This output is tie()'d to cout\n";
t1.join();
}
Вывод:
This output from main is not tie()'d to cout
Output from thread...This output is tie()'d to cout
...thread calls flush()
См. также
инициализирует стандартные объекты потока Оригинал: initializes standard stream objects Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public элемент класса std::ios_base)
| |
| пишет в стандартный поток ошибок C stderr (глобальный объект) | |
| пишет в стандартный выходной поток C stdout (глобальный объект) |