使用c ++编写带字节顺序标记(BOM)的csv文件?

时间:2011-11-17 10:01:19

标签: c++ file-handling byte-order-mark

我正在尝试使用c ++创建一个带有带BOM的UTF8的csv文件。任何人都可以帮助我,怎么做?

2 个答案:

答案 0 :(得分:3)

只需将BOM放入一个字符串并将其写入您的文件(使用您正在使用的任何方法,例如stream或classic cstdio):

const char *bom = "\xef\xbb\xbf"; // UTF-8
const char *bom_alt = {0xef, 0xbb, 0xbf, 0}; // the null termination is optional, depending on how you write it later on

然后你必须确保你实际上正在编写正确的UTF-8并且没有ANSI或宽字符串。我建议使用UTF8-CPP(已经在工作项目中使用它并且完全正常,而不必使用像Boost这样的大型库)。

答案 1 :(得分:1)

如果您使用的是Qt库,则可以使用QTextStream::setGenerateByteOrderMark(bool)添加BOM。