C++ isalpha:如果argv不是字母表。如何设定条件?

C++ isalpha:如果argv不是字母表。如何设定条件?,c++,c,C++,C,我制作了一个程序,它接受两个命令行参数,其中第一个参数是文件名本身,第二个是字母关键字。如果我必须拒绝任何数值参数,我该如何设置条件,或者写什么 我的伪代码: 如果argv[1]不是字母表,则拒绝它(返回1) 我该怎么做?对不起,我是计算机编程的新手,尤其是C 编辑:第二个参数是字符串。我必须检查用户是否输入了字符串而没有数字值。如果用户输入一个数字,或者一个带有数字的字符串(比如bacon11),我的程序应该拒绝它并返回1;我该怎么办 我的代码如下所示: // Reject numeric

我制作了一个程序,它接受两个命令行参数,其中第一个参数是文件名本身,第二个是字母关键字。如果我必须拒绝任何数值参数,我该如何设置条件,或者写什么

我的伪代码:

如果argv[1]不是字母表,则拒绝它(返回1)

我该怎么做?对不起,我是计算机编程的新手,尤其是C

编辑:第二个参数是字符串。我必须检查用户是否输入了字符串而没有数字值。如果用户输入一个数字,或者一个带有数字的字符串(比如bacon11),我的程序应该拒绝它并返回1;我该怎么办

我的代码如下所示:

 // Reject numeric value
for (int i = 0, n = strlen(argv[1]); i < n; i++)
{
    if //TODO: if letter is not a letter reject it.
    {
        return 1;
    }
}
//拒绝数值
对于(inti=0,n=strlen(argv[1]);i
我应该在待办事项行写什么?我不能限制代码

您可以使用该功能

编辑:您的代码似乎运行良好。尽管如此,我不会做你的工作,但我可以给你一些线索

  • 检查以理解if语句(您也可以检查示例)
  • 不要忘记argv是一个二维字符数组。因此,要获得参数的特定字符,可以执行以下操作:
    argv[i][j]
  • 检查函数的返回值以测试字符

    • 从最普遍的意义上讲,这可能是一个棘手的问题,因为 “字母”的定义可能取决于语言环境,并且将 取决于环境使用的编码;如果编码 如果是UTF-8(今天的常见情况),可能会非常困难,因为 您必须处理多字节字符

      另一方面,您声明第二个参数是 按字母顺序排列的关键字。如果有固定数量的关键字 (除此之外,它们不会是关键字),这是最简单的解决方案 只是在关键字表中查找参数;如果你 找不到,这是个错误。比如:

      static std::string keywords[] =
      {
          "keyword1",
          "keyword2",
          //  ...
      };
      
      if ( std::find( std::begin( keywords ), std::end( keywords ), argv[2] )
              == std::end( keywords ) ) {
          //  Error, keyword not found.
      }
      
      或者,如果你说的是“字母”,你指的是字母表中26个字符中的一个 英语字母表(可排除重音字符,或 西里尔语,或汉语,或诸如此类的),这通常是 如果一个人只关心关键词,那么你可以 使用
      isalpha
      功能(当然正确):

      如前所述,这只适用于C++11;使用旧版本的 C++,它更复杂。而且非常有限;通常情况下 一个有经验的C++程序员首先要做的是设置全局
      将区域设置设置为其用户的区域设置,这可能不是“C”。

      欢迎使用StackOverflow。最好的方法是通过一本关于C或C++的好书(你需要决定你所学的两种语言中的哪一种,它们是不同的语言),并学习基础知识。对于C,我推荐《C编程语言》,这是一本由语言作者编写的非常容易理解的书。请注意:
      argv[1]
      是第一个参数,
      argv[2]
      是第二个参数;也许你需要检查argv[2]
      ?@anatolyg:计算机从0开始索引。是吗?举个例子就好了,因为
      isalpha
      需要
      int
      @juanchopanza你看过链接了吗?这里有一个例子。@PomfCaster这个例子当然是不正确的,如果文本不是常量,就会导致未定义的行为。对这个问题的一些编辑:第二个参数是字符串。我必须检查用户是否输入了字符串而没有数字值。如果用户输入一个数字,或者一个带有数字的字符串(比如bacon11),我的程序应该拒绝它并返回1;我该怎么办?我的代码如下所示://Reject numeric value for(inti=0,n=strlen(argv[1]);iif ( std::find_if( argv[2], argv[2] + strlen( argv[2] ), []( unsigned char ch ) { return !isalpha( ch ); } ) != argv[2] + strlen( argv[2] ) ) { // Error, non alphabetic found... }