如何在C++字符数组中检测扩展ASCII值(128到255)的存在。
char 时小于0)有什么问题吗?
Char(字符)可以是有符号或无符号的。但这并不重要。实际上,您想要检查每个字符是否为有效的ASCII码。这是一项积极的、明确的检查。您只需检查每个字符是否同时大于等于0且小于等于127。任何其他情况(无论是正数还是负数,"扩展ASCII码"还是UTF-8编码)都是无效的。
现在还有人使用isascii吗?
char c = (char) 200;
if (isascii(c))
{
cout << "it's ascii!" << endl;
}
else
{
cout << "it's not ascii!" << endl;
}
请确保您知道所讨论的计算机的字节序,然后使用位与掩码检查最高位:
if (ch & 128) {
// high bit is set
} else {
// looks like a 7-bit value
}
但是,您应该使用可能适用于此的区域设置函数。更好的方法是要了解数据输入的字符编码。试图猜测它就像试图猜测进入数据库字段的数据格式一样。它可能会被接受,但是垃圾输入,垃圾输出。
遍历数组并检查每个字符是否不在128到255范围内?
bool detect(const signed char* x) {
while (*x++ > 0);
return x[-1];
}
检查它们的值是否为负数
(char) c = (char) 200;
if (isascii(c))
{
cout << "it's ascii!" << endl;
}
else
{
cout << "it's not ascii!" << endl;
}