【发布时间】:2013-12-04 22:27:22
【问题描述】:
我是 C++ 新手,来自非 CS 背景。因此,如果这个问题很愚蠢或以前已经回答过,请原谅。
我有一个 c++ 字符串,语言是泰卢固语。
std::string str = "ఉంది"; // (it means exists; pronounced as Vundi)
std::string substring = str.substr(0,3);
上面的子字符串是“ఉ”(发音为 Vu),它的 unicode 十六进制值是 0C09。
如何从子字符串中获取值 0C09? 目的是检查子字符串是否在泰卢固语(0C00-0C7F)的有效范围内。
我看到了它们适用于 obj-c、java、php、c# 等的其他问题。我正在寻找使用 std::string 的 c++。
根据评论,我在joelonsoftware.com/articles/Unicode.html阅读了这篇文章。
让我用更多信息更新我的问题。 我使用的是 Fedora 19 x86_64,编码是 UTF-8。控制台能够正常显示文本。
根据文章,如果我理解正确,ASCII 是单字节字符,而 unicode 是多字节字符。上面的代码示例反映了,这里每个 unicode 字符的长度为 3 个字节。除了讨论 UTF-8/文本编码和多字节字符外,本文对检测 unicode 字符串的语言没有任何实际帮助。
也许我应该改写我的问题:
如何在 C++ 中检测 unicode 字符串的语言?
提前感谢您的帮助。
【问题讨论】:
-
看来你需要了解一下文本编码。这是一篇关于该主题的不错的文章:joelonsoftware.com/articles/Unicode.html 理解这篇文章将使您so更容易处理您面临的问题。我推荐它:)
-
感谢您的信息和及时回复。我会仔细阅读这篇文章。