我的字符串很宽,我正在将其写入以二进制模式打开的wofstream中。当我查看结果文件时,它丢失了所有其他字节。

我期望当我使用二进制编辑器在Visual Studio中打开文件时,我会把其他所有字节都视为零,但看不到零。

你知道我在想什么吗?

谢谢。

代码是这样的:

CAtlStringW data = L"some data";
wofstream stream("c:\hello.txt", ios_base:out|ios_base:binary);
stream.write( data.GetBuffer(), data.GetLength() );
stream.close();

最佳答案

当使用输出宽流向文件写入时,实际发生的是将宽字符转换为其他8位编码。

如果您使用的是UTF-8语言环境,则会将宽字符串转换为UTF-8编码的文本(但MSVC不提供UTF-8语言环境),因此通常它将尝试转换为某些代码页(如cp1251或ASCII)。

关于c++ - 为什么我的std::wofstream写ansi?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2380307/

10-11 18:48