【发布时间】:2015-06-24 03:28:12
【问题描述】:
我继承了一个旧的 Borland C++ Builder 应用程序,现在我必须将它迁移到一个新的开发工具。建议的方法是使用 Embarcadero C++ Builder,从我最初的测试来看,这似乎是一个相当平稳的过渡。
不过,我确实有一个问题,我希望有一个简单的解决方案:
应用程序解析大量文本文件。这些文件都是基于 ANSI 的,并且永远不会改变,所以它是 ANSI 输入和 ANSI 输出。我遇到的主要问题是,在 Embarcadero C++ 中,string 类型现在是 UnicodeString 而不是 AnsiString(就像在 Borland C++ Builder 中一样)。
在此应用程序中使用 Unicode 不是一个选项 - 它使用的文件是 ANSI 格式的。修改代码以使用AnsiString(和类似的)是可行的,但我宁愿不这样做,因为它使用了很多TStringList(和类似的)构造。
所以我的问题是:是否有设置或编译器选项或其他东西可以用来告诉 Embarcadero 使用 System.AnsiString 作为 string 的定义而不是 System.UnicodeString?
这可能是一个远景,但 RAD Studio XE(这是我借来进行一些测试的旧版本)文档说“默认情况下,类型 string现在是 Unicode 字符串”,这意味着可以更改。然而,当前版本 (XE8) 的文档中对此进行了重新表述,所以...
【问题讨论】:
-
为此目的使用
UnicodeString没有任何问题。UnicodeString和AnsiString都是模板AnsiStringT的特化,其中模板参数是代码页。
标签: c++ c++builder unicode-string ansistring