扫描字符串字符的 ASCII 值

Scan for ASCII values of string characters

本文关键字:ASCII 字符 字符串 扫描      更新时间:2023-10-16

我想检查字符串是否包含 0-9 或 A-Z 以外的任何字符,如果包含,请停止程序。这是我所做的:

string number_in;
for (int i = 0; number_in[i] == ''; i++)
{
    if ( (number_in[i] < 48) || ( (number_in[i] > 57) && (number_in[i] < 65) ) || (number_in[i] > 90) )
    {
        cout << "nInput number contains incorrect characters!n";
        getchar;
        return 0;
    }
}

但是无论我输入哪个字符串,它总是跳过 for 循环。为什么会这样?

number_in[i] == ''似乎是不正确的。这是循环继续运行的条件。

但是,使用std::isalnumstd::all_of有一个更简单的解决方案:

bool stopProgramm = !std::all_of( std::begin(str), std::end(str),
                                  [] (unsigned char c) 
                                  { return std::isdigit(c) || std::isupper(c); } );

number_in[i] == ''应该number_in[i] != '' 。当条件为真时运行的 for 循环。

你应该做:

#include <cctype>
// ...
  char const c = number_in[i];
  if ( !(isascii(c) && (isdigit(c) || isupper(c))) ) {
    // ...
  }

严格来说,不需要isascii(c),但是,如果你想跨平台,如果c不是ASCII,其他is*()函数在Windows上会中断。