先将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
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
来源:知乎
著作权归作者所有,转载请联系作者获得授权
链接:http://www.zhihu.com/question/35254977/answer/61945181
来源:知乎
著作权归作者所有,转载请联系作者获得授权