Obiekt wcerr w C ++ jest obiektem klasy ostream. Jest on powiązany ze standardowym stderr strumienia wyjściowego błędu języka C.
Różnica między cerr i wcerr
cerr
używa char (wąski znak) jako typ znaku. Może być używany dla znaków ASCII i ANSI.
Do internacjonalizacji potrzebujemy ciągów Unicode, które nie pasują do znaku. wcerr
używa wchar_t
(znak szeroki) i nadaje się do znaków Unicode.
Różnica między wcout i wcerr
Początkujący programiści C ++ używają cout
i wcout
wyświetlają błąd przy użyciu standardowego wyjścia do debugowania swoich programów, ale zawsze jest dobrą praktyką używanie cerr
i wcerr
wyświetlanie błędów.
Dzieje się tak, ponieważ zamiast wyświetlać strumień błędów na ekranie, możesz później zmienić strumień błędów, aby zapisać błędy w pliku.
deklaracja wcerr
extern wostream wcerr;
Jest zdefiniowany w pliku nagłówkowym "> plik nagłówkowy.
wcerr
Obiektu zapewnia być inicjowane w trakcie lub przed pierwszym obiektem typu ios_base::Init
jest wykonana. Po wcerr
skonstruowaniu obiektu wyrażenie (wcerr.flags & unitbuf)
ma wartość niezerową, co oznacza, że wszelkie dane wyjściowe wysyłane do tych obiektów strumienia są natychmiast przesyłane do systemu operacyjnego. Również wcerr.tie() == &wcout
np. wcerr.tie()
Zwraca, &wcout
co oznacza, że wcout.flush()
jest wykonywana przed jakąkolwiek operacją wyjściową wcerr
.
„Wc” w wcerr
odwołuje się do „szerokiego znaku”, a „err” oznacza „błąd”, stąd wcerr oznacza „szerokokątny błąd”. wcerr
Przedmiot jest stosowane wraz z operatorem wstawiania (<<) w celu wyświetlania strumienia znaków. Ogólna składnia to:
wcerr << varName;
lub
wcerr << "Some String";
Operator ekstrakcji może być używany więcej niż jeden raz z kombinacją zmiennych, łańcuchów i manipulatorów (takich jak endl
):
wcerr << var1 << "Some String" << var2 << endl;
Przykład: Jak działa 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; )
Po uruchomieniu programu wynik będzie następujący: (jeśli nie można otworzyć pliku)
Błąd podczas otwierania pliku data.txt