📜  C++ wclog

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

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

clog和wclog之间的区别

阻塞用户char(narrow 字符)作为字符类型。它可以用于ASCII和ANSI 字符。

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

wcerr和wclog之间的区别

wclogwcerr ,两者都具有相关联stderr ,但它不同于wcerr在这个意义上,在流wclog被缓冲,而不是与自动捆绑wcout

缓冲输出比无缓冲输出更有效。对于缓冲输出,所有输出都保存到变量中并一次写入磁盘。对于无缓冲的输出,我们必须继续写入磁盘。

对于严重错误,不建议使用缓冲输出。在系统崩溃的情况下,可能会出现以下情况:输出仍在缓冲区中,并且未写入磁盘,并且错误消息无法检索。在系统崩溃的情况下,我们无法承受丢失错误数据的风险,因此即使速度较慢,我们也会继续将严重错误写入磁盘。

wclog通常用于记录目的。对于非关键事件日志记录,效率更为重要,因此wclog优于wcerr

wclog声明

extern ostream wclog;

它在头文件中定义。

确保在第一次构造ios_base::Init类型的对象期间或之前初始化wclog对象。 wclog不与任何其他流绑定。

wclog的“ wc”是指“宽字符”,因此wclog表示“宽字符日志”。的

wclog对象与插入运算符 (<<)一起使用,以显示字符流。通用语法为:

wclog << varName;

要么

wclog << "Some String";

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

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

示例:wclog如何工作?

#include 
#include 

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 <

当您运行该程序时,可能会输出[如果打开文件时出错]:

Error while opening the file data.txt