C++识别中文标点
2016-07-22 11:24
1441 查看
先将UTF8 string转为wchar_t字符类型的wstring。这个可以借助第三方库、系统API(例如windows的MultiByteToWideChar)、C++11的<codecvt>等。之后用<locale>库的ispunct模板函数来识别标点符号。这个函数用法和C版本的ispunct差不多,只是多了字符类型模板参数和一个本地环境locale参数,因此可以根据locale判断出英文字符以外的符号。在中文系统语言的windows下一般不显式设置locale就可以工作:locale loc;
wchar_t c = L'。';
cout << boolalpha << ispunct(c, loc) << endl; // true
而linux环境下如果要识别英文以外的标点可能需要指定locale:locale loc("en_US.UTF-8");
wchar_t c = L'。';
cout << boolalpha << ispunct(c, loc) << endl; // true
作者:Gomo Psivarh
链接:http://www.zhihu.com/question/35254977/answer/61945181
来源:知乎
著作权归作者所有,转载请联系作者获得授权
wchar_t c = L'。';
cout << boolalpha << ispunct(c, loc) << endl; // true
而linux环境下如果要识别英文以外的标点可能需要指定locale:locale loc("en_US.UTF-8");
wchar_t c = L'。';
cout << boolalpha << ispunct(c, loc) << endl; // true
作者:Gomo Psivarh
链接:http://www.zhihu.com/question/35254977/answer/61945181
来源:知乎
著作权归作者所有,转载请联系作者获得授权
相关文章推荐
- 【高精度算法】A-B 要求:除数与被减数均为正整数
- NYOJ236心急的c小加
- 【高精度算法】A/B 高精度除以低精度 保留小数
- C语言单向链表的建立
- STL中迭代器 (Iterator) 的简单实现
- 栈实现一个简单的运算器
- error C2065:未声明的标识符错误
- 【高精度算法】A+B
- c++高精模板(+ ,-,*,/)
- 【高精度算法】A+B 加强版
- 【高精度算法】A-B(答案可负)
- C++ pure virtual function call
- C++ 局部静态变量,全局变量,全局静态变量,局部变量的区别和联系
- C语言 随机函数 种子
- C语言培训_010
- 李洪强漫谈iOS开发[C语言-014]-变量
- C++中嵌入python程序——命令行模式
- C++优化tips
- c++ this指针
- C++ 可变参数的函数