使用CodeGear C ++ Builder 2009将unicode字符串写入文件

时间:2009-08-18 01:17:43

标签: c++ string file unicode c++builder

我刚从Builder 6切换到Builder 2009并有一个问题。

如何将unicode字符串写入文件?

TBytes Preamble1 = TEncoding::Unicode->GetPreamble();
UnicodeString str1("string1");
int len = TEncoding::Unicode->GetByteCount(str1);

FileWrite( iFile,&Preamble1[0],Preamble1.Length );

FileWrite( iFile,str1.c_str(),len );

这就是我现在正在做的事情,但我想应该有一些原生的方式 顺便说一句,是否可以获得Preamble一次并假设在应用程序生命周期内它不会改变?从UnicodeString的可用文档看,它似乎总是UTF-16 LE

1 个答案:

答案 0 :(得分:3)

我的第一个问题是“什么样的档案”?

假设它是一个文本文件而不是二进制文件,你想在输出上使用什么样的编码? UTF-8通常是一个不错的选择,因为它受到记事本之类的支持,对于普通的“拉丁”字符,没有任何开销。

就个人而言,要编写“简单”文本文件,我只需将字符串添加到TStringList,然后使用SaveToFile方法。

TStringList *list = new TStringList;
list->Add(str1);
list->Add(str2);
...
list->SaveToFile(filename, TEncoding::UTF8);