帮我看看这个c++小程序吧,我看不懂
admin 发表于 2010-08-28 | 来源:互联网 | 阅读:

帮我讲解讲解这个c++程序吧,尽可能详细点,因为我才开始学c++,呵呵,谢谢–

#include <iostream>
#include <sstream>
#include <fstream>
using namespace std;
int main()
{
ifstream in("aaa.txt");
for(string s;getline(in,s);)
{
int a,sum=0;
for(istringstream sin(s);sin>>a;sum+=a);
cout<<sum<<endl;
}
}

aaa.tet文件内容为:

12 3 45 67 8 9
56 232 12 23
12 1
8
1212 2312

已经有14 个评论
  1. 红烧生鱼片 说:

    ifstream 是个文件流,把文件打开,getline把文件流里的东西按行输入,到s string里。istringstream是个string流,可以把s里的数据按照空格分开,一次输入一个。所以这个程序就是把文件里的数据累加

  2. xiaobao520 说:

    C/C++ code

    #include <iostream>
    #include <sstream>
    #include <fstream>
    using namespace std;
    int main()
    {
    ifstream in("aaa.txt");
    for(string s;getline(in,s);) //先读入一行字符串,放入s中
    {
    int a,sum=0;
    for(istringstream sin(s);sin>>a;sum+=a); //把s放入字符串流中,然后,当s中还有内容时就不断地输给a(变成了int),sum+=a
    cout < <sum < <endl; //最后输出总和
    }
    }
    //stringstream可以用来转换数字和字符串,具体的你再搜索一下

  3. WOOMYWOODY 说:

    同意楼上的

  4. water20042 说:

    [code=C/C++][/code]#include <iostream>  #include <sstream>  #include <fstream>  using namespace std;  int main()  {  ifstream in("aaa.txt"); //这里的in是什么意思?for(string s;getline(in,s);) //这里的in又是什么意思?{  int a,sum=0;  for(istringstream sin(s);sin>>a;sum+=a);  cout < <sum < <endl;  }  } 

  5. 风子 说:

    ifstream in("aaa.txt"); //这里的in是什么意思? 定义了一个ifstream的对象,并初始化为aaa文件for(string s;getline(in,s);) //这里的in又是什么意思? 从ifstream对象in中按行读取内容并存放在s中

  6. xwcylm 说:

    ifstream in("aaa.txt"); //这里的in是什么意思? 定义了一个ifstream的对象,并初始化为aaa文件 for(string s;getline(in,s);) //这里的in又是什么意思? 从ifstream对象in中按行读取内容并存放在s中也就是说这里的两个in可以同时换成相同的别的东西了,比如x,是吗?

  7. 天天累 说:

    C/C++ code
    for(istringstream sin(s);sin>>a;sum+=a); //这里的>>是什么意思呢?

  8. rongxin 说:

    去看看一看输入输出流的资料吧,GOOGLE,是一个很好 的工具…有时学习的方法很重要

  9. 好色的皮卡丘 说:

    C/C++ code
    #include <iostream>
    #include <sstream>
    #include <fstream>
    using namespace std;
    int main()
    {
    ifstream in("aaa.txt"); //ifstream是读入,需要的头文件是fstream,in是自己命名的,aaa.txt放在源文件的目录中
    for(string s;getline(in,s);) //string s自定义一个字符串s,getline(in,s)表示从in中读入一行放进s中
    {
    int a,sum=0;
    for(istringstream sin(s);sin>>a;sum+=a); //istringstream sin(s) 表示从字符串s中输入,sin也是自己命名的,和上面的in类似,sin>>a从s中
    cout < <sum < <endl; //读入一个数给a
    }
    }

    但是我还是不明白,代码中的两个循环是怎样跳出的,请高手解惑?

  10. sbamd 说:

    for(string s;getline(in,s);)  当getline得不到东西(也就是到了该文件的文件末尾)时就跳出来了for(istringstream sin(s);sin>>a;sum+=a);当sin>>a出现错误(也就是sin为空时)就跳出来了

  11. xiaobao520 说:

    文件流读取。

  12. cxjasx 说:

    高手们,这个问题已经解决,目的就是为下面这个程序,后来我用字符串(其实它也是一种数组)数组到到了将字符倒置的目的,并利用循环得出了文件中每行二进制所对应的十进制数—–我把程序贴出来,给大家看看C/C++ code

    #include<iostream>
    #include<sstream>
    #include<fstream>
    #include<string>
    #include<cmath>
    using namespace std;
    void main()
    {
    double sum=0;
    int flag=0,tt=0;
    ifstream w("aaa.txt");
    for(string s;getline(w,s);)
    {
    for(int i=s.length()-1;i>=0; i–)
    {
    if(s[i-1]==’-'&&s[i]==’1′)
    {
    tt=1;
    break;
    }
    if(s[i]==’0′)
    {
    flag++;
    }

    if(s[i]==’1′)
    {
    sum=sum+pow(2,flag);
    flag++;
    }
    }
    if(tt==1)
    break;
    cout.precision (20);
    cout<<sum<<endl;
    sum=0;
    flag=0;
    }

    }

    其中的aaa.txt文件的内容是:0101001000011111011111011011001100101111111001111110000000100000000000000001111111110101010010101010010100000001111100100001-1最后输出的结果为:184924582623264510878459494412433

  13. lee 说:

    引用楼主 huxiaolong930 的帖子:帮我讲解讲解这个c++程序吧,尽可能详细点,因为我才开始学c++,呵呵,谢谢– #include <iostream> #include <sstream> #include <fstream> using namespace std; int main() { ifstream in("aaa.txt"); //打开文件aaa.txtfor(string s;getline(in,s);) //getline函数获得文件的每一行输入。{ int a,sum=0; for(istringstream sin(s);sin>>a;sum+=a); //利用istringstream将每一行中分割成一个个string ,并将每一个string当作int输出。cout < <sum < <endl; //sum将输出的int累加} } 大概意思就这样

  14. TheAlien 说:

    呵呵,这应该是钱能书上的转换二进制数啊,看懂啦,向楼主学习。

我要评论

评论功能因故关闭!

请加入我们的QQ群一起参与讨论:群号59400482(500人超级群)


返回首页 | 关于我们 | 联系我们 | 广告合作 | 网站地图 | 友情链接 | 版权声明