说我的命令行是a.out -a 3eF6
如果我访问 argv[2],它将给我 3eF6(我认为这是一个字符数组?)我将如何循环检查每个字符是否是整数,而不是像“e”这样的 alpha 值还是“F”?
我如何/将它变成一个字符串?
我知道如果我这样做a = atoi(argv[2])
,argv[2]
32 在哪里,那么 a = 32。我也知道如果argv[2]
是 3eF6,那么以下不会导致“错误输入”。
a = 0;
a = atoi(argv[2])
if( a = 0 )
cout << "wrong input";
相反,a
将被评估为 3。因此它仅读取此实例中的第一个整数,但我希望能够访问整个参数 3eF6。
我尝试过使用 atoi(getline(argv[2], a) 或类似的东西,但由于某种原因,我收到一个错误,提示我无法将字符串转换为 const char。
无论如何,我如何将 argv[2] 转换为我可以解析的字符串?或者我如何访问 argv[2] 中的每个字符?
我也试过:
string string1 = argv[i+1] // argv[i] is an option like -a
但是在使用参数运行程序时,我收到此错误:
./a.out -b 2 -a 2 -s 2 -t 8
在抛出 'std::logic_error' what() 的实例后调用终止:basic_string::_S_construct NULL not valid Abort (core dumped)