C++ C++;字符*到整数错误
我想获取一个命令行参数(它将是一个大于零的整数),并将其用作函数中的整数参数(以决定使用函数的哪个部分) 当我尝试编译时,会收到一些警告:C++ C++;字符*到整数错误,c++,char,int,C++,Char,Int,我想获取一个命令行参数(它将是一个大于零的整数),并将其用作函数中的整数参数(以决定使用函数的哪个部分) 当我尝试编译时,会收到一些警告: warning: invalid conversion from ‘char*’ to ‘int’ warning: initializing argument 4 of ‘double func(double, double, double, int)’ 我想我明白为什么会这样,我只是不知道如何修复它。到目前为止,我发现谷歌搜索没有什么太大的帮助。我在C
warning: invalid conversion from ‘char*’ to ‘int’
warning: initializing argument 4 of ‘double func(double, double, double, int)’
我想我明白为什么会这样,我只是不知道如何修复它。到目前为止,我发现谷歌搜索没有什么太大的帮助。我在C++方面很新,任何能给我指明正确方向的信息都是很棒的。谢谢你抽出时间
argv[1]
属于char*
类型。使用以下命令将其转换为整数:
您可以使用
std::istringstream
转换数字:
int main(int ac, char * av[]) {
int av1;
if (2 <= ac
&& std::istringstream(av[1]) >> av1) {
do_something_with(av1);
}
else {
report_error();
}
}
int main(int ac,char*av[]){
int av1;
如果(2>av1){
用(av1)做某事;
}
否则{
报告_错误();
}
}
提示:argv
属于char**
类型。您可以将其视为字符串数组。您可能正在查找:参数将不是大于零的整数。它将是一个C风格的字符串,希望它表示大于零的整数的值。您需要将该C样式字符串转换为它所表示的值。
char *ptr;
int n = strtol(argv[1], ptr, 10);
/* Error checking */
int main(int ac, char * av[]) {
int av1;
if (2 <= ac
&& std::istringstream(av[1]) >> av1) {
do_something_with(av1);
}
else {
report_error();
}
}