使用流命令行浮动输入和输出

时间:2011-10-13 16:02:06

标签: c++ stream command-line-arguments

我在这个网站上的第一个问题是:

我正在研究一个教程问题,它要求我编写一个程序,从命令行输出一些输入的浮点数的乘积:这是使用流完成的。 现在在我的教程书中,它建议使用以下代码:

#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)”

我们非常感谢任何建议。

3 个答案:

答案 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>在开头。

此外,你计算的是总和,而不是产品。