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, 其他没测试.
--- auth:lzpong