C++ 去除字符串中的控制字符

原地去除 控制字符(保留制表符、换行符和回车符)

static bool isControlCharacter(unsigned char c) { // !!! 此处需要 unsigned, 不然最高位为1会变成现负数,总是返回true !!!
    return (c < 0x20) && (c != '\t' && c != '\n' && c != '\r'); // 保留制表符、换行符和回车符
}

// 原地去除 控制字符(保留制表符、换行符和回车符)
void earseCtrlChart(std::string& str) {
    str.erase(std::remove_if(str.begin(), str.end(), isControlCharacter), str.end());
}

这里也有坑的, 参数 `isControlCharacter` 参数不能是 char, 否则, 汉字也没有了; 还有就是, 字符串的编码是要UTF-8, 其他没测试.

posted @ 2025-08-12 11:19  _Ong  阅读(9)  评论(0)    收藏  举报