我在这个网站上的第一个问题是:
我正在研究一个教程问题,它要求我编写一个程序,从命令行输出一些输入的浮点数的乘积:这是使用流完成的。 现在在我的教程书中,它建议使用以下代码:
#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&gt; :: get(char **&amp;,int)”
我们非常感谢任何建议。
答案 0 :(得分:1)
感谢帮助outybungalobill和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;
}
答案 1 :(得分:0)
您的假设缺失。改变这一行:
istream cinx(81,argv[i];
到此:
istream cinx(81,argv[i]);
您还需要初始化sum
- 更改:
float sum;
为:
float sum = 0.0f;
关于命令行参数的数量,您还要关注一个 - 更改:
for(i=1;i<argc-1;i++){
为:
for(i=1;i<argc;i++){
答案 2 :(得分:0)
istream构造函数需要streambuf。你可能想使用istringstream:
istringstream cinx(argv[i]);
和#include <sstream>
在开头。
此外,你计算的是总和,而不是产品。