Обектът 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