O objeto wcerr em C ++ é um objeto da classe ostream. Ele está associado ao fluxo de saída de erro C padrão stderr.
Diferença entre cerr e wcerr
cerr
usa char (caractere estreito) como tipo de caractere. Ele pode ser usado para caracteres ASCII e ANSI.
Para internacionalização, precisamos de strings Unicode que não cabem em char. wcerr
usa wchar_t
(caractere largo) e pode ser usado para caracteres Unicode.
Diferença entre wcout e wcerr
Os programadores iniciantes em C ++ usam cout
e wcout
para exibir o erro usando a saída padrão para depurar seus programas, mas é sempre uma boa prática usar cerr
e wcerr
exibir os erros.
Isso ocorre porque, em vez de mostrar o fluxo de erros na tela, você pode posteriormente alterar o fluxo de erros para gravar os erros em um arquivo.
declaração wcerr
extern wostream wcerr;
É definido no arquivo de cabeçalho "> arquivo de cabeçalho.
O wcerr
objeto tem a garantia de ser inicializado durante ou antes da primeira vez que um objeto do tipo ios_base::Init
é construído. Depois que o wcerr
objeto é construído, a expressão (wcerr.flags & unitbuf)
é diferente de zero, o que significa que qualquer saída enviada para esses objetos de fluxo é imediatamente liberada para o sistema operacional. Também wcerr.tie() == &wcout
ie wcerr.tie()
retorna o &wcout
que significa que wcout.flush()
é executado antes de qualquer operação de saída wcerr
.
O "wc" em wcerr
se refere a "caractere largo" e 'err' significa "erro", portanto, wcerr significa "erro de caractere largo". O wcerr
objeto é usado junto com o operador de inserção (<<) para exibir um fluxo de caracteres. A sintaxe geral é:
wcerr << varName;
ou
wcerr << "Alguma String";
O operador de extração pode ser usado mais de uma vez com uma combinação de variáveis, strings e manipuladores (como endl
):
wcerr << var1 << "Alguma String" << var2 << endl;
Exemplo: Como funciona o 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; )
Quando você executa o programa, a saída será: (se o arquivo não puder ser aberto)
Erro ao abrir o arquivo data.txt