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

标签 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

最佳答案

我的第一个问题是“什么样的文件”?

假设它是一个文本文件而不是二进制文件,您希望输出的编码类型是什么? UTF-8 通常是一个不错的选择,因为它受记事本之类的支持,并且对于普通的“拉丁”字符,没有开销。

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

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

关于c++ - 使用 CodeGear C++ Builder 2009 将 unicode 字符串写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291338/

相关文章:

c++ - 如果插槽对象包含互斥锁和条件变量,则 Boost signals2 connect() 调用无法编译

c++ - 查找给定年、月和 "nth"日在 C/C++ 月中出现的日期

c++ - 尝试使用winbgim显示文本时出现编译器错误

java - 如何从 Web 应用程序读取文本文件

c++ - 按段比较 64 位整数

python - python - 如何使用单行将列表/元组转换为python中的空格分隔字符串?

python - 如何在Python 3中显示单词中的前3个字母,但用 "-"破折号替换单词的其余部分

file - 如何在 Erlang 中跨目录复制文件?

node.js - 如何在请求 Node 获取或 Node 中发送文件?

c++ - WinRT 在自定义路径创建文件