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();
    }
}