字符串中的外语C ++

时间:2018-01-31 07:57:05

标签: c++

我正在开发一种多语言软件(第一次使用除英语之外的任何其他语言)。

我创建了读取多个本地化文件的代码,然后用户选择了他们的语言,并使用了本地化文件。

这一切都很好,花花公子,但当我尝试显示外语符号(如韩语)时,它没有显示正确的符号。

我需要做些什么特别的事情来将中文,韩文,日文等存储到字符串中吗?我的一个韩国本地化文件看起来像这样....

[Labels]
Username=사용자 이름
Password=암호

所以在我的代码中我有一个函数可以得到像这样的指定字符串......

const std::string& UsernameLabel = GetLocalizationString("Korean", "Labels", "Username");
const std::string& PasswordLabel = GetLocalizationString("Korean", "Labels", "Password");

2 个答案:

答案 0 :(得分:5)

问题的根源是std::string本身,因为它处理char s(在大多数情况下等于1个字节)。一旦您计划开发多语言软件,您必须执行以下操作之一:

  • 使用std::wstring处理"广泛的字符" (通常在Windows上为2个字节)。容易做,涵盖大多数情况。
  • 远离标准字符串类,并使用UTF-8(或UTF-32等)编码来表示UI信息。因此,它意味着使用字节缓冲区而不是字符串,因为一些符号用多个字节编码,一些字节根本不是符号(如肤色,性别等的表情符号修饰符)。最正确的方法可能很耗时。

更新:此外,您可能会发现此讨论很有用:std::wstring VS std::string

答案 1 :(得分:1)

广角应该适合你的情况,比如unicode,我来自国家,希望能帮助你。