检查UTF16字符串中的所有字符是否有效
Check if all characters in UTF16 string are valid?
我遇到一个问题,因为我的UTF16字符串(std::wstring
)可能包含"无效"字符,导致控制台终端停止打印(请参阅问题)。
我想知道是否有一种快速的方法可以检查字符串中的所有字符,并用?
替换任何无效字符。
我知道我可以用正则表达式做一些类似的事情,但很难让它验证所有有效的字符,而且速度也很慢。我可能使用的字符代码是否有一个数字范围,例如26-5466之间的所有字符代码都有效?
应该可以使用std::ctype<wchar_t>
来确定字符是否可打印:
std::local loc;
std::replace_if(string.begin(), string.end(),
[&](wchar_t c)->bool { return !std::isprint(c, loc); }, L'?');
我怀疑您的问题与字符的有效性无关,而是与控制台打印字符的能力有关。
UNICODE对"可打印"的定义并不一定与控制台本身"打印"的有效能力一致。
像"€"这样的字符是"可打印的",但例如,不能在winXP控制台上打印。
相关文章:
- 如何检查一个字符是否与字符数组中的另一个字符匹配?
- 如何检查字符串中的最后一个字符是否是某个字符并将其从字符串中删除?(C++)
- 常量字符*是否有任何例外?
- 拆分字符串输入并查找字符是否有效
- CPP 中的 ++ 运算符对字符是否有任何重载?
- 验证字符是否小于字母 c++ 中的指定字母
- 字符串中的重复字符是否可以在 O(n) 中识别和量化
- 错误 ~ 检查字符是否为小写字母
- C++ 使用 || 检查字符是否不在字符串中不工作
- 如何检查2D阵列中的字符是否出现多次?C
- 将短字母转换为字符是否合法
- 比较两个字符*是否相等
- 如何检查字符是否是某个字母表中的字母
- 检查字符是否等于 C++ 中的
- 如何检查字符是否在范围内
- Strchr不起作用,或者我需要一个替代方案来检查给定字符串中的任何字符是否是另一个字符串的一部分
- C++如何确定字符是否是单词中的第一个字符
- 在VC ++浮点数据类型值中,如何检查字符串或特殊字符是否混合
- 如何检查字符串中的字符是否为字符串
- 字符 * 是否有等效的 _mm_loadu_ps