#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 ++的新手,所以我不确定问题是什么。谢谢你的帮助。
答案 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}}。