📅  最后修改于: 2020-09-25 14:38:01             🧑  作者: Mango
cerr
使用char(narrow 字符)作为字符类型。它可以用于ASCII和ANSI 字符。
为了进行国际化,我们需要不适合char的Unicode 字符串 。 wcerr
使用wchar_t
(宽字符),可用于Unicode 字符。
初级C++程序员使用cout
和wcout
通过标准输出来显示错误,以调试程序,但是使用cerr
和wcerr
来显示错误始终是一种好习惯。
这是因为您以后可以更改错误流以将错误写入文件,而不是将错误流显示在屏幕上。
extern wostream wcerr;
它在
确保在第一次构造ios_base::Init
类型的对象期间或之前初始化wcerr
对象。构造wcerr
对象后,表达式(wcerr.flags & unitbuf)
不为零,这意味着发送到这些流对象的任何输出都将立即刷新到操作系统。另外wcerr.tie() == &wcout
即wcerr.tie()
返回&wcout
,这意味着wcout.flush()
在对wcerr
进行任何输出操作之前wcout.flush()
执行。
wcerr
的“ wc”表示“宽字符”,而“ err”表示“错误”,因此wcerr表示“宽字符错误”。 wcerr
对象与插入运算符 (<<)一起使用,以显示字符流。通用语法为:
wcerr << varName;
要么
wcerr << "Some String";
提取运算符可以与变量, 字符串和操纵符 (例如endl
)结合使用多次:
wcerr << var1 << "Some String" << var2 << endl;
#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