Об'єкт wcerr у C ++ є об'єктом класу ostream. Це пов'язано зі стандартним виводом помилок C потоку stderr.
Різниця між cerr та wcerr
cerr
використовує char (вузький символ) як тип символу. Його можна використовувати для символів ASCII та ANSI.
Для інтернаціоналізації нам потрібні рядки Unicode, які не відповідають символу char. wcerr
використовує wchar_t
(широкий символ) і використовується для символів Unicode.
Різниця між wcout та wcerr
Початківці програмісти на C ++ використовують cout
і wcout
для відображення помилки, використовуючи стандартний вивід для налагодження своїх програм, але завжди є гарною практикою використовувати cerr
і wcerr
відображати помилки.
Це пов’язано з тим, що замість показу потоку помилок на екрані, ви можете згодом змінити потік помилок, щоб записати помилки у файл.
декларація wcerr
зовнішній wostream wcerr;
Це визначається у файлі заголовка "> файл заголовка.
wcerr
Об'єкт гарантовано бути ініційовані під час або перед першим об'єктом типу ios_base::Init
побудований. Після wcerr
побудови об'єкта вираз (wcerr.flags & unitbuf)
не дорівнює нулю, що означає, що будь-який вихід, що надсилається до цих об'єктів потоку, негайно змивається з операційною системою. Також wcerr.tie() == &wcout
тобто wcerr.tie()
повертає, &wcout
що означає, що wcout.flush()
виконується перед будь-якою операцією виводу на wcerr
.
"Wc" у wcerr
посилається на "широкий символ", а "помилка" означає "помилка", отже, 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