Объект wcerr в C ++ - это объект класса ostream. Он связан со стандартным потоком вывода ошибок C stderr.
Разница между cerr и wcerr
cerr
в качестве символьного типа использует char (узкий символ). Его можно использовать для символов ASCII и ANSI.
Для интернационализации нам нужны строки Unicode, которые не помещаются в char. wcerr
использует wchar_t
(широкий символ) и может использоваться для символов Юникода.
Разница между wcout и wcerr
Начинающие программисты на C ++ используют cout
и wcout
для отображения ошибки с помощью стандартного вывода для отладки своих программ, но всегда полезно использовать cerr
и wcerr
отображать ошибки.
Это связано с тем, что вместо того, чтобы отображать поток ошибок на экране, вы можете позже изменить поток ошибок, чтобы записать ошибки в файл.
декларация wcerr
extern wostream wcerr;
Он определен в заголовочном файле "> заголовочный файл.
Гарантируется, что wcerr
объект будет инициализирован во время или до первого создания объекта типа ios_base::Init
. После создания wcerr
объекта выражение (wcerr.flags & unitbuf)
не равно нулю, что означает, что любой вывод, отправленный этим объектам потока, немедленно сбрасывается в операционную систему. Также wcerr.tie() == &wcout
т.е. wcerr.tie()
возвращается, &wcout
что означает, что wcout.flush()
выполняется перед любой операцией вывода wcerr
.
«Wc» в wcerr
выражении «широкий символ», а «err» означает «ошибка», следовательно, wcerr означает «ошибка широкого символа». wcerr
Объект используется вместе с оператором вставки (<<) для того , чтобы отобразить поток символов. Общий синтаксис:
wcerr << varName;
или
wcerr << "Некоторая строка";
Оператор извлечения может использоваться более одного раза с комбинацией переменных, строк и манипуляторов (например, endl
):
wcerr << var1 << "Некоторая строка" << var2 << endl;
Пример: как работает wcerr?
#include #include using namespace std; int main() ( char fileName() = "data.txt"; wifstream infile(fileName); if(infile) wcout << infile.rdbuf(); else wcerr << "Error while opening the file " << fileName << endl; return; )
Когда вы запустите программу, вывод будет: (если файл открыть не удалось)
Ошибка при открытии файла data.txt