gpt4 book ai didi

c++ - 如何读取 char argv 输入并解析(检查)它的非整数

转载 作者:行者123 更新时间:2023-11-28 03:21:55 25 4
gpt4 key购买 nike

假设我的命令行是 a.out -a 3eF6

如果我访问 argv[2],它会给我 3eF6(我认为这是一个字符数组?)我将如何遍历它以检查每个字符都是整数,而不是像“e”或“F”这样的 alpha 值?

我如何/将把它变成一个字符串?

我知道如果我执行 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

terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct NULL not valid Abort (core dumped)

最佳答案

TCHAR c;
int n(0);
int x(0);
int y(0);

for (x = 0; x < argc; ++x)
{
// Loop through each character in the argument.
n = _tcslen(argv[x]);
for (y = 0; y < n; ++y)
{
c = argv[x][y];
if (isdigit(c))
{
cout << c << "is a digit" << endl;
}
else
{
cout << c << "is not a digit" << endl;
}
}
}

关于c++ - 如何读取 char argv 输入并解析(检查)它的非整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15182353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com