简单均值计算器的问题

时间:2014-02-08 19:20:44

标签: c++

#include <string>
#include <iostream>

using namespace std;
int main(int argc, char* argv[]) {
//Make sure there is an argv[1] to check
if (1 < argc) {
    std::string option = std::string(argv[1]);
    if ("mean" == option) {
        float sum = 0;
        cout << (argc)<<"\n";
        for (int i = 0; i<= argc; i++){
        sum = sum+reinterpret_cast<int>(argv[i]);

        }
        cout<<(sum)<<"\n";
        cout<<(argc)<<"\n";
        cout<<(sum/argc)<<"\n";
    }
return 0
}

我是c ++的新手,但这段代码为我输入的内容返回了荒谬的价值。例如,我使用命令行“homework1 mean 1 2 3 4”,值在四元组中。我正在使用64位机器,如果这有帮助,我是c ++的新手,所以我不确定问题是什么。谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

首先,reinterpret_cast不会将字符串转换为整数。使用类似std::stod的内容。 (取决于您想要做多少错误检查。)

其次,这些界限

for (int i = 0; i<= argc; i++)

将无效,因为argv [0]是可执行文件的名称,而argv [argc]是一个空指针。使用

for (int i = 2; i < argc; i++){
    sum += std::stof(argv[i]);
}

注意,您的编译器需要支持c ++ 11才能使其正常工作。 (std::stof等已添加到标准的c ++ 11版本中。)如果不是,则需要使用sum += strtof(argv[i], NULL);。有关详细信息,请参阅strtof的{​​{3}}。