1

我无法通过 turbo c++ 中的命令行传递整数值。请帮我。

4

5 回答 5

10

您只能将参数作为字符串传递给可执行文件。您可以使用std::atoi将字符串转换为整数。

int main(int argc, const char* argv[])
{
  if ( argc > 1 ) {
    int i = atoi( argv[1] );
  }

  return 0;
}
于 2009-09-08T17:35:45.880 回答
6

您必须将它作为字符串传递,然后用类似的东西解析它atoior strtol

命令行参数总是字符串(或者char*如果你想挑剔的话 s :)

于 2009-09-08T16:58:00.090 回答
6

您不能从命令行传递整数,只能传递字符串。传入您的数字,并使用::atoi(或任何其他转换函数)将其转换为整数

于 2009-09-08T16:58:23.257 回答
1

我真的很想知道为什么您仍然坚持使用古老的编译器!越早切换到现代编译器越好!无论如何,这样做的代码如下:

#include<stdlib.h>
#include<iostream.h>
int main(int lenArgs, char *args[]){
    int num = 0;
    if (lenArgs > 1){
        num = atoi(args[1]);
    }
    else{
        cout<<"Please give an argument to the program!";
        return 1;
    }
    cout<<num<<endl;
    return 0;
}
于 2009-12-26T08:52:47.277 回答
0

如果您只为此一次传递它,并且不需要维护可以提供给 main 函数的char*参数,则可以转换 C++ 运行时为您的程序提供的参数,使用int i = atoi( argv[1] ).

如果您要拥有更多参数,您可能还需要某种方式来命名它们。然后值得看一下该getopt功能。这允许更灵活的命令行参数。

甚至还有命令行解析框架允许类型检查和很多。

于 2009-09-08T17:27:46.927 回答