C++识别中文标点

先将UTF8 string转为wchar_t字符类型的wstring。这个可以借助第三方库、系统API(例如windows的MultiByteToWideChar)、C++11的等。之后用库的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
来源:知乎
著作权归作者所有,转载请联系作者获得授权

你可能感兴趣的:(C++识别中文标点)