![](/img/trans.png)
[英]Parsing command line char arguments as ints with error checking in C++
[英]Command Line Arguments error checking, see if whole argument is an integer
int main(int argc, char *argv[])
{
if(!isdigit(*argv[1]))
{
cerr << "Error msg" << endl;
return 1;
}
}
嘿伙计们,对于我的程序的一部分,我必须检查第一个参数 (argv[1]) 是否为整数。 如果给定的参数不是整数,它会打印出错误 msg 并退出程序,如果不是则继续执行。 当参数是常规字符串(例如 dzd 或 xy)时,我的程序可以正确查找错误,但是当给定参数以数字开头(例如 1dzd 或 32st)时,它无法找到错误。 我想知道你们中是否有人可以帮助我弄清楚如何更改或添加给定的代码以使其能够正确地找到诸如 1dzd 或 32st 之类的参数的错误?
谢谢!
一种方法是使用istringstream
来检查是否可以转换为int
:
int val;
std::istringstream iss(argv[1]);
if(!(iss >> val)) {
cerr << "Error msg" << endl;
return 1;
}
您只是在检查第一个字符是否是数字。 以下代码将检查整个参数是否为数字。 或者你可以只使用标准函数 strtol。
char *ch = argv[1];
while(*(ch++) != 0) {
if(!isdigit(*argv[1]))
{
cerr << "Error msg" << endl;
return 1;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.