Wclog C ++

Différence entre sabot et wclog

obstruer les utilisateurs char (caractère étroit) comme type de caractère. Il peut être utilisé pour les caractères ASCII et ANSI.

Pour l’internationalisation, nous avons besoin de chaînes Unicode qui ne rentrent pas dans char. wclog utilise wchar_t (caractère large) et utilisable pour les caractères Unicode.

Différence entre wcerr et wclog

 wclog et wcerr , les deux sont associés à stderr , mais il diffère de wcerr dans le sens où les flux dans wclog sont tamponnés et ne sont pas automatiquement liés avec wcout .

La sortie tamponnée est plus efficace que la sortie sans tampon. Dans le cas d’une sortie tamponnée, toute la sortie est enregistrée dans une variable et écrite sur le disque en une seule fois. Pour une sortie sans tampon, nous devons continuer à écrire sur le disque.

La sortie en mémoire tampon n’est pas préférée pour les erreurs critiques. En cas de panne du système, il peut arriver une situation où la sortie était toujours dans la mémoire tampon et n’a pas été écrite sur le disque et le message d’erreur ne peut pas être récupéré. Nous ne pouvons pas nous permettre de perdre des données d’erreur en cas de panne du système, nous continuons donc à écrire les erreurs critiques sur le disque même s’il est plus lent.

 wclog est couramment utilisé à des fins de journalisation. Pour la journalisation des événements non critiques, l’efficacité est plus importante, donc wclog est préférable à wcerr .

déclaration wclog

extern ostream wclog;

Il est défini dansEn tête de fichier.

le wclog objet est assuré d’être initialisé pendant ou avant la première fois un objet de type ios_base::Init est construit. wclog n’est lié à aucun autre flux.

Le « wc » dans wclog fait référence à « caractère large », d’où wclog signifie « journal de caractères larges ». le

 wclog  object is used along with the insertion operator (<<) in order to display a stream of characters. The general syntax is:

wclog << varName;

ou

wclog << "Some String";

L’opérateur d’extraction peut être utilisé plusieurs fois avec une combinaison de variables, de chaînes et de manipulateurs (comme endl ):

wclog << var1 << "Some String" << var2 << endl;

Exemple: comment fonctionne wclog?

 #include <iostream>
#include <fstream>

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 <<endl;
return 0;
}