我正在使用std :: wstring变量(C++语言),我正在尝试确定字符串的长度(以字符为单位).
函数.length和.size()给出的结果不是字符的长度(我想它们告诉我有多少个字符?).
那么有没有办法确定wstring的字符长度?
你是什么意思"人物"?
std::basic_string只是一系列值的容器,我们认为它是一个字符串.它不关心值的编码 ; 它所做的就是存储和管理有序的值序列.因此它size和length函数说明它存储了多少个值.
如果你std::wstring包含一个代表一个有效的UTF-16编码字符串的字符串,std::wstring则无关紧要.Unicode编码只是编码代码点的方法.UTF-16使用16位代码单元对其代码点进行编码,代码点可以包括对应于单个Unicode代码点的16位值的代理对.
但是,Unicode代码点不是该术语的某些定义的"字符".例如,存在组合代码点,其中多个代码点被组合以形成字形.有不可见的代码点(控制代码等).
如果您想知道a中有多少个代码点std::wstring,那么您必须使用可以处理UTF-16数据的函数来遍历该字符串.如果您想知道字符串中有多少字形(逻辑字形),那么您需要使用更复杂的算法来处理它.
为此,您必须使用Unicode数据库.您应该使用ICU(如何在ICU中执行)或其他一些Unicode库.Boost.Locale已被接受提升并将很快推出,它以一种很好的方式包含了ICU的一些功能.
但是,我怀疑你确实需要这样做.请参阅字形,字符,代码点,codeunit的定义.可能你的意思是代码点,但几乎可以肯定它不是很有用.
| 归档时间: |
|
| 查看次数: |
1392 次 |
| 最近记录: |