我发现自己需要一种方法将字符串更改为小写,可以安全地用于ASCII和UTF16-LE(在某些Windows注册表字符串中找到)并遇到了这个问题:How to convert std::string to lower case?
对我来说似乎是“最正确”的答案(我没有使用Boost)是demonstrated using the icu library的答案。
在这个答案中,他为UnicodeString构造函数指定了编码“ISO-8859-1”。为什么这是正确的值,我怎么知道使用什么?
ISO-8859-1已经针对我使用的仅使用拉丁字符的ASCII编码字符串运行的少数单元测试工作,但如果我不知道原因,我不喜欢使用它。
如果重要,我主要关注的是操纵通常以ASCII格式存储的英文数据,但是Windows注册表能够以UTF-16LE存储内容,我不想阻止自己支持其他语言通过使用非unicode安全的东西乱丢我的代码来实现。
答案 0 :(得分:1)
ICU中的我发现自己需要一种方法来将字符串更改为小写,以便进行不区分大小写的字符串比较
UnicodeString
有许多caseCompare()
方法,用于“使用完整案例折叠不区分大小写”进行比较。您无需手动转换字符串。
在这个答案中,他为UnicodeString构造函数指定了编码“ISO-8859-1”。为什么这是正确的值,我怎么知道使用什么?
因为作者正在将ISO-8859-1编码的char*
字符串文字传递给构造函数。 UnicodeString
表示UTF-16编码的字符串。如果使用char*
作为输入构造它,则必须指定输入数据编码的正确字符集,以便UnicodeString
可以将其解码为Unicode,然后将其重新编码为UTF-16。 / p>