您的位置:首页 > 编程语言 > C语言/C++

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

来源:知乎

著作权归作者所有,转载请联系作者获得授权
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: