[英]C++ char* to int error
我想采用命令行參數(將是一個大於零的整數)並將其用作函數中的整數參數(以決定要使用的函數的哪個部分)。
double func(double x, double y, double z, int n) {
if (n==1) { return 1; }
if (n==2) { return 2; }
// etc
}
int main (int argc, char *argv[]) {
int n = argv[1];
// etc, later I call func(x,y,z,n) with this definition of n
}
當我嘗試編譯時,我收到一些警告:
warning: invalid conversion from ‘char*’ to ‘int’
warning: initializing argument 4 of ‘double func(double, double, double, int)’
我想我明白為什么會這樣,我只是不知道如何解決它。 到目前為止我沒有發現任何谷歌搜索太有幫助了。 我對C ++很陌生,任何指向正確方向的信息都會很棒。 感謝您的時間。
argv[1]
的類型為char*
。 使用strtol將其轉換為整數:
char *ptr;
int n = strtol(argv[1], ptr, 10);
/* Error checking */
您可以使用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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.