c++去除中英文标点

文章介绍了如何在C++中利用<codecvt>库和wstring_convert进行字符串处理,通过将UTF-8编码的字符串转换为宽字符串,过滤掉指定的逗号、句号和全角逗号,然后重新转回UTF-8编码,实现标点符号的去除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查了很多资料,试过很多方法,都不能用,我不想用头文件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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值