簡體   English   中英

C ++ char *到int錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM