如何获取 std::string 的准确长度?

2023-12-04

我正在修剪长条std::string使用此代码将其放入文本容器中。

std::string AppDelegate::getTrimmedStringWithRange(std::string text, int range)
{
    if (text.length() > range)
    {
        std::string str(text,0,range-3);
        return str.append("...");
    }
    return text;
}

但对于其他语言,例如HINDI "हिन्दी"的长度std::string是错的。

我的问题是如何在所有测试用例中检索 std::string 的准确长度。

Thanks


假设您使用的是 UTF-8,您可以将字符串转换为简单的(哈!)Unicode 并计算字符数。我从以下位置抓取了这个例子罗塞塔代码.

#include <iostream>
#include <codecvt>
int main()
{
    std::string utf8 = "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9d\x84\x8b"; // U+007a, U+00df, U+6c34, U+1d10b
    std::cout << "Byte length: " << utf8.size() << '\n';
    std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> conv;
    std::cout << "Character length: " << conv.from_bytes(utf8).size() << '\n';
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取 std::string 的准确长度? 的相关文章

随机推荐