我在这个网站上的第一个问题是:
我正在做一个教程问题,它要求我写一个程序,从命令行输出一些输入的浮点数的乘积:这将使用流来完成。现在在我的教程中,它建议使用以下代码:
#include <iostream>
#include <cstdio>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <string>
#include <cstdlib>
#include <istream>
using namespace std;
int main( int argc, char* argv[] )
{
float data[20];
int i;
float sum;
for(i=1;i<argc-1;i++){
istream cinx(81,argv[i];
cinx>>data[i];
cout<<data[i];
sum=sum+data[i];
}
cout<<"nsum = "<<sum;
}
所以我尝试了上面的代码和许多不同的变化,直到我的头发掉下来!-但无济于事,因为它不编译,相反,我得到的错误信息沿行:
"调用std::basic_istream>::get(char**&, int)没有匹配的函数"
感谢帮助outybungalbill和Paul R.
编译并成功运行的最终代码是:
#include <iostream>
#include <sstream>
using namespace std;
int main( int argc, char* argv[] )
{
float data[20];
int i;
float sum = 0.0f;
for(i=1;i<argc;i++){
istringstream cinx(argv[i]);
cinx>>data[i];
cout<<data[i];
sum=sum+data[i];
}
cout<<"nsum = "<<sum<<"n";
system ("PAUSE");
return 0;
}
istream构造函数需要一个streambuf。你可能想使用istringstream:
istringstream cinx(argv[i]);
和#include <sstream>
开头
而且,你计算的是和,而不是乘积。
您缺少一个括号。修改这一行:
istream cinx(81,argv[i];
:
istream cinx(81,argv[i]);
您还需要初始化sum
- change:
float sum;
:
float sum = 0.0f;
在命令行参数的数量上也差了一个- change:
for(i=1;i<argc-1;i++){
:
for(i=1;i<argc;i++){