📜  C++ Wcerr

📅  最后修改于: 2020-09-25 14:38:01             🧑  作者: Mango

C++中的wcerr对象是ostream类的对象。它与标准C错误输出流stderr相关联。

cerr和wcerr之间的区别

cerr使用char(narrow 字符)作为字符类型。它可以用于ASCII和ANSI 字符。

为了进行国际化,我们需要不适合char的Unicode 字符串 。 wcerr使用wchar_t (宽字符),可用于Unicode 字符。

wcout和wcerr之间的区别

初级C++程序员使用coutwcout通过标准输出来显示错误,以调试程序,但是使用cerrwcerr来显示错误始终是一种好习惯。

这是因为您以后可以更改错误流以将错误写入文件,而不是将错误流显示在屏幕上。

宣言

extern wostream wcerr;

它在头文件中定义。

确保在第一次构造ios_base::Init类型的对象期间或之前初始化wcerr对象。构造wcerr对象后,表达式(wcerr.flags & unitbuf)不为零,这意味着发送到这些流对象的任何输出都将立即刷新到操作系统。另外wcerr.tie() == &wcoutwcerr.tie()返回&wcout ,这意味着wcout.flush()在对wcerr进行任何输出操作之前wcout.flush()执行。

wcerr的“ wc”表示“宽字符”,而“ err”表示“错误”,因此wcerr表示“宽字符错误”。 wcerr对象与插入运算符 (<<)一起使用,以显示字符流。通用语法为:

wcerr << varName;

要么

wcerr << "Some String";

提取运算符可以与变量, 字符串和操纵符 (例如endl )结合使用多次:

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

示例: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;
}

运行该程序时,输出为:[如果无法打开文件]

Error while opening the file data.txt