2命令行参数中的数字数字仅被视为一个数字

2 Digit Numbers in Command Line arguments Treated only as a Single Digit

本文关键字:数字 一个 参数 命令行      更新时间:2023-10-16

这是我的average.cpp中的代码:

#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[]) {
  int total = 0;
  for(int i=1; i<argc; i++) {
    char cnum = *argv[i];
    string snum = "";
    snum += cnum;
    total += stoi(snum);
  }
  cout << "The average is " << total/(argc-1) << endl;
  return 0;
}

当我运行 ./average 3 5 33时,答案应围绕到 13,但是我得到了 3。当我运行./average 3 5 44时,答案应围绕到17,但是我得到了4。我知道只有该论点的第二个数字才被忽略,但是我不确定如何包括第二个数字。

char cnum = *argv[i];

这是该论点的第一个字符。您不需要第一个字符,而是想要 thote 参数。所以只写:

    const std::string snum = argv[i];
    total += std::stoi(snum);

(您可以将其写为:

    total += std::stoi(argv[i]);

这取决于从 const char*std::string的隐式转换 - 但是在调试以命名中间值时通常会有所帮助。)

以下帮助吗?

  int total = 0;
  for(--argc; argc > 0 ; --argc) total += atoi(argv[argc]);
相关文章: