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



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

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

#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++){

相关内容

  • 没有找到相关文章

最新更新