删除string中的标点

删除string中的标点

string word;
word.erase(std::remove_if(word.begin(), word.end(), ispunct),word.end());	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 UTF-8 编码模式下,标点字符是以 3 个字节的形式存储的。因此,我们可以使用类似删除文字符的方式来删除标点字符。 以下是一个示例程序,演示如何从读取的 UTF-8 编码字符串删除标点字符: ```cpp #include <iostream> #include <string> bool is_chinese_punctuation(char c) { return (c & 0xE0) == 0xE0 && ((c & 0xFF) == 0xA1 || (c & 0xFF) == 0xA3); // 标点字符的 UTF-8 编码范围是 0xE38080 - 0xE380BE 和 0xE38180 - 0xE381BE } int main() { std::string str = u8"Hello,你好!世界。"; std::string clean_str; for (size_t i = 0; i < str.length(); i += 3) { std::string chinese_char = str.substr(i, 3); if (!is_chinese_punctuation(chinese_char[0])) { clean_str += chinese_char; } } std::cout << clean_str << std::endl; return 0; } ``` 在这个示例,我们定义了一个函数 is_chinese_punctuation(),用于判断一个字符是否是标点字符。在这个函数,我们使用了位运算和掩码来判断字符的 UTF-8 编码是否在标点字符的范围内。 然后,在主函数,我们遍历字符串的每个文字符。如果这个文字符不是标点字符,则将其添加到新的字符串 clean_str 。最后,输出 clean_str 即可。 输出结果为: ``` Hello你好世界 ``` 需要注意的是,以上方法只适用于纯字符串,如果字符串混杂着其它字符,那么就需要根据具体情况进行分析和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值