Obiekt wclog w C ++ jest obiektem klasy wostream. Jest on powiązany ze standardowym stderr strumienia wyjściowego błędu języka C.
Różnica między clog i wclog
zatkać użytkowników 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. wclog używa wchar_t (szerokiego znaku) i może być używany dla znaków Unicode.
Różnica między wcerr i wclog
wclog
i wcerr
, oba są powiązane z stderr
, ale różni się od tego wcerr
w tym sensie, że strumienie wclog
są buforowane i nie są automatycznie powiązane z wcout
.
Wyjście buforowane jest bardziej wydajne niż wyjście niebuforowane. W przypadku buforowanego wyjścia wszystkie dane wyjściowe są zapisywane w zmiennej i jednocześnie zapisywane na dysku. Aby uzyskać niebuforowane wyjście, musimy nadal zapisywać na dysku.
Buforowane dane wyjściowe nie są preferowane w przypadku błędów krytycznych. W przypadku awarii systemu może dojść do sytuacji, w której dane wyjściowe nadal znajdowały się w buforze i nie zostały zapisane na dysku i nie można pobrać komunikatu o błędzie. Nie możemy sobie pozwolić na utratę danych o błędach w przypadku awarii systemu, więc zapisujemy krytyczne błędy na dysku, mimo że jest wolniejszy.
wclog
jest powszechnie używany do celów logowania. W przypadku rejestrowania zdarzeń niekrytycznych wydajność jest ważniejsza, dlatego preferowany jest wclog wcerr
.
deklaracja wclog
zewnętrzny ostream wclog;
Jest zdefiniowany w pliku nagłówkowym "> plik nagłówkowy.
wclog
Obiektu zapewnia być inicjowane w trakcie lub przed pierwszym obiektem typu ios_base::Init
jest wykonana. wclog
nie jest powiązany z żadnym innym strumieniem.
„Wc” w wclog
odnosi się do „szerokiego znaku”, a zatem wclog
oznacza „dziennik znaków szerokich”. Plik
wclog
obiekt jest używany wraz z operatorem wstawiania (<<) w celu wyświetlenia strumienia znaków. Ogólna składnia to:
wclog << varName;
lub
wclog << "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
):
wclog << var1 << "Some String" << var2 << endl;
Przykład: Jak działa wclog?
#include #include using namespace std; int main() ( char fileName() = "data.txt"; wifstream infile(fileName); if(infile) wcout << infile.rdbuf(); else wclog << L"Error while opening the file " << fileName <
When you run the program, a possible output will be (if there is error in opening the file):
Error while opening the file data.txt