c++ - boost split 不能拆分中文句子

标签 c++ boost split chinese-locale

我有一个中文句子,我想用中文标点符号拆分它。但它失败了。我在文件中使用了 utf-8 编码。

std::string src = "使用boost split失败了,不知道什么原因。有人可以告诉我吗?谢谢!";

boost::split(results, src, boost::is_any_of(",.,。"));

分割结果为:

["使用boost split失败了", "", "", "不知道�", "么原因", "", "", "有人可以告诉我吗", "", "�谢谢", "", "�"]

boost split 不能拆分中文单词?有人可以告诉我原因吗?谢谢。

最佳答案

我发现 C++11 正则表达式可以解决这个问题:

std::regex regex(",|。|!|?");
std::string src = "使用boost split失败了,不知道什么原因。有人可以告诉我吗?谢谢!";

std::sregex_token_iterator iterator(src.begin(), src.end(), regex, -1);
std::sregex_token_iterator end;

for ( ; iterator != end; ++iterator) {
    std::string res = *iterator;
    std::cout << res << std::endl;
}

results:
使用boost split失败了
不知道什么原因
有人可以告诉我吗
谢谢

为什么boost不能?我是不是用错了方法?

关于c++ - boost split 不能拆分中文句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43223439/

相关文章:

c++ - OpenSSL库中的SMIME_read_PKCS7方法有输入长度1200的限制?

c++ - 如何返回由 boost::varaint 返回类型中包含的类型的子集构成的 boost::variant

css - 在 2 div 中拆分屏幕并在 css 中设置第二个宽度和剩余空间?

java - 修剪 Java 字符串中不需要的字符

c++ - 为什么编译器不能将 const int 绑定(bind)到右值引用?

c++ - 在 C++ 中,将 std::numeric_limits<double>::max() 用作特殊的 "flag"是否安全?

c++ - 使用Boost的两个3d线串的 map 几何相交

r - 缩写科学名称的功能

c++ - CPP 中的 gRPC 提供 TLS 支持

c++ - 解决问题 # C++98 在使用 Boost 库 1.53 或 1.56 的代码中有效使用 “for_each”