将C ++ LPCWSTR打印到文件

时间:2009-04-04 06:41:58

标签: c++ windows

我正在尝试将LPCWSTR值打印到文件中,但它只打印地址而不是值。

我尝试取消引用变量(使用*)来获取值,但这也不起作用。

如何打印值?

void dump(LPCWSTR text){

  ofstream myfile("C:\\myfile.txt", ios::app );
  myfile << text << endl;
  myfile.close();

}

提前致谢。

2 个答案:

答案 0 :(得分:2)

使用wofstream(basic_ofstream)。这将起作用的原因是因为std流的w版本设计用于处理宽字符串和数据。您正在使用的窄版本将看到一个宽字符串,可能包含一些嵌入的空值,并认为它是字符串的结尾。

答案 1 :(得分:1)

wofstream将生成一个也是unicode的输出(没有BOM)。这可能不是布莱恩想要的。

不幸的是,如果你希望你的文件是8位字符,那么你将逐步退出C ++字符串并将unicode字符串转换为8位字符。

您可以使用wcstombs将字符串转换为8位字符。转换是在当前区域设置中完成的,因此请确保使用setlocale确保转换采用正确的区域设置。不幸的是,setlocale的文档表明它无法转换为UTF-8 :(