当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ wclog用法及代码示例


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

clog 和 wclog 的区别

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

对于国际化,我们需要不适合 char 的 Unicode 字符串。 wclog 使用 wchar_t(宽字符)并可用于 Unicode 字符。

wcerr 和 wclog 的区别

wclogwcerr 都与 stderr 相关联,但它与 wcerr 的不同之处在于 wclog 中的流被缓冲并且不会自动与 wcout 绑定。

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

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

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

wclog 声明

extern ostream wclog;

它在<iostream> 头文件中定义。

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

wclog 中的"wc" 指的是"wide character",因此wclog 表示“宽字符日志”。这

wclog 对象与插入运算符 (

wclog << varName;

或者

wclog << "Some String";

提取运算符可以与变量、字符串和操纵器的组合多次使用(如 endl ):

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

示例:wclog 是如何工作的?

#include <iostream>
#include <fstream>

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 <<endl; 
      return 0;
}

运行程序时,可能的输出将是[如果打开文件时出错]:

Error while opening the file data.txt

相关用法


注:本文由纯净天空筛选整理自 C++ wclog。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。