查了很多资料,试过很多方法,都不能用,我不想用头文件local那种方法,最后发现下面这么写最简单。注意65292、12290、44分别表示这三种标点:,。,
还需要过滤哪些标点自己去输出对应的数字就可以,道理是一样的。
#include <codecvt>
std::string eval_result_tmp = "待去除标点,字符串。";
std::wstring_convert<std::codecvt_utf8<wchar_t>> conv;
std::wstring ws = conv.from_bytes(eval_result_tmp);
std::wstring nws;
//过滤每一行中的标点
for (wchar_t ch : ws){
//检查是否是标点
if (ch != 65292 && ch != 12290 && ch != 44)
nws.push_back(ch);
}
//将过滤后的文本重新转换成UTF-8编码的多字节类型
std::string eval_result = conv.to_bytes(nws);
std::cout << "*" << eval_result << std::endl;