c++ - 简单均值计算器的问题

标签 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++ 的新手,所以我不确定问题出在哪里。感谢您的帮助。

最佳答案

首先,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);。有关详细信息,请参阅 documentation对于 strtof

关于c++ - 简单均值计算器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21650695/

相关文章:

c++ - 仅为专用模板类定义转换运算符

java - 使用 C++ 中的库为 PhoneGap 创建插件

c++ - 为什么逗号在 C++ 可变函数声明中是可选的?

C++ 表示可选对象

c++ - 如何发现U盘处于只读模式?

c++ - 迭代器 for 循环不会确认循环完成条件

c++ - Python OpenCv 构建未在命令行中检测到 visual studio 2019

c++ - 打开简历。从网络摄像头的实时馈送中复制或裁剪图像,没有内存泄漏

c++ - Clang (OS X) 在特定的嵌套声明中需要 "template"关键字,而 VS 禁止它

c++ - 为什么我不能在模板中返回数组的第一个元素?