首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的性病::wofstream写ansi?

为什么我的性病::wofstream写ansi?
EN

Stack Overflow用户
提问于 2010-03-04 15:12:03
回答 2查看 2.3K关注 0票数 1

我有一个宽字符串,我把它写到了一个wofstream中,我在out\binary模式下打开了它。当我查看结果文件时,它会丢失其他每一个字节。

当我在visual studio中使用二进制编辑器打开文件时,我以为其他字节都是零,但我没有看到零。

你知道我错过了什么吗?

谢谢。

代码是这样的:

代码语言:javascript
复制
CAtlStringW data = L"some data";
wofstream stream("c:\hello.txt", ios_base:out|ios_base:binary);
stream.write( data.GetBuffer(), data.GetLength() );
stream.close();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-09 20:33:17

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

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

票数 0
EN

Stack Overflow用户

发布于 2010-09-02 17:42:39

请参阅页面http://msdn.microsoft.com/en-us/library/f1d6b0fk(VS.80).aspx底部的"Community“。简而言之,您必须使用pubsetbuf()来为流使用基于wchar_t的内部缓冲区(而不是基于char的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2380307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档