使用ofstream编写txt文件时强制编码

时间:2011-09-08 14:54:25

标签: c++ windows encoding character-encoding

我使用ofstream编写一个txt文件,由于各种原因,文件应该有本地编码而不是UTF8。 处理文件的机器具有与目标本地不同的本地化。

有没有办法在编写文件时强制编码?

问候,

伊兰

2 个答案:

答案 0 :(得分:2)

您可以在std::ios::imbue对象上调用ofstream来修改区域设置。这不会影响全局区域设置。

std::ofstream os("output.txt");
std::locale mylocale(""); 
os.imbue(mylocale);
os << 1.5f << std::endl;
os.close();

注意std::locale构造函数的参数,它是依赖于实现的。例如,德语区域设置可以是:

std::locale mylocale("de_DE"); 

std::locale mylocale("German"); 

答案 1 :(得分:0)

嗯,鉴于它是Windows,无论如何你都没有UTF8。但究竟你在写什么?通常,内存中有std::string并将其写入磁盘。唯一的区别是内存中的\n被转换为磁盘上的CR / LF(\r\n)。这到处都是相同的翻译。

您可能会遇到编写std::wstring的情况。在这种情况下,它由区域设置决定。默认语言环境是C语言环境,又名std::locale("C") or std :: locale :: classic(). The local encoding (which you seem to want) is std :: locale(“”)`。

存在其他区域设置;见here