El objeto wcerr en C ++ es un objeto de clase ostream. Está asociado con el flujo de salida de error C estándar stderr.
Diferencia entre cerr y wcerr
cerr
utiliza char (carácter estrecho) como tipo de carácter. Se puede utilizar para caracteres ASCII y ANSI.
Para la internacionalización, necesitamos cadenas Unicode que no encajen en char. wcerr
utiliza wchar_t
(carácter ancho) y utilizable para caracteres Unicode.
Diferencia entre wcout y wcerr
Los programadores principiantes de C ++ usan cout
y wcout
para mostrar el error usando la salida estándar para depurar sus programas, pero siempre es una buena práctica usar cerr
y wcerr
mostrar errores.
Esto se debe a que, en lugar de mostrar el flujo de errores en la pantalla, más tarde puede cambiar el flujo de errores para escribir los errores en un archivo.
declaración wcerr
wostream wcerr externo;
Se define en el archivo de encabezado "> archivo de encabezado.
Se wcerr
garantiza que el objeto se inicializa durante o antes de la primera vez que ios_base::Init
se construye un objeto de tipo . Una vez wcerr
construido el objeto, la expresión (wcerr.flags & unitbuf)
es distinta de cero, lo que significa que cualquier salida enviada a estos objetos de flujo se descarga inmediatamente en el sistema operativo. También wcerr.tie() == &wcout
es decir, wcerr.tie()
devuelve, lo &wcout
que significa que wcout.flush()
se ejecuta antes de cualquier operación de salida wcerr
.
El "wc" en se wcerr
refiere a "carácter ancho" y "err" significa "error", por lo tanto wcerr significa "error de carácter ancho". El wcerr
objeto se utiliza junto con el operador de inserción (<<) para mostrar un flujo de caracteres. La sintaxis general es:
wcerr << varName;
o
wcerr << "Alguna cadena";
El operador de extracción se puede utilizar más de una vez con una combinación de variables, cadenas y manipuladores (como endl
):
wcerr << var1 << "Alguna cadena" << var2 << endl;
Ejemplo: ¿Cómo funciona 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; )
Cuando ejecute el programa, la salida será: (si el archivo no se pudo abrir)
Error al abrir el archivo data.txt