| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 749 人关注过本帖
标题:关于文件输入流的一道题目
只看楼主 加入收藏
wylog
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-8-5
收藏
 问题点数:0 回复次数:3 
关于文件输入流的一道题目
编写一个程序,从一个文本文档中读取捐款的的人数,名字已经捐款的数目,并从屏幕上输出。文本文档的内容如下:
4
Sam Stone
2000
Freida Flass
100500
Tammy Tubbs
5000
Rich Raptor
55000
注:首行为捐款人数。在下面的每一对中,第一行是名字,第二行是捐款数额。要求使用结构数组进行存储每对的信息。读取所有数据后,程序将显示捐款超过10000的捐款者的姓名及捐款数额。

我遇到的困难是,声明一个结构数组后,怎样从文件区分每行的字符和数字?或者什么时候回车之后开始读取一行,例如,读取第一个数字“4”之后,怎样开始另起一行读取,然后把这行存储在一个数组里。程序主要应用ifstream对文件的读取。
搜索更多相关主题的帖子: 文件 捐款 数字 数额 
2008-08-11 16:22
xlh5225
Rank: 2
等 级:论坛游民
威 望:2
帖 子:188
专家分:25
注 册:2007-8-14
收藏
得分:0 
类的定义:
class DonativeInfo{
    friend ifstream& operator >>(ifstream& in, DonativeInfo& di){
        getline(in, di.m_name);

        string tStr;
        getline(in, tStr);
        di.m_num = atoi(tStr.c_str());

        return in;
    }
    
public:
    int    GetNum()const  {return m_num;}
    string GetName()const {return m_name;}

private:
    string  m_name;
    int     m_num;
};

所需头文件:
#include <iostream>
#include <fstream>
#include <string>

命名空间:
std

主程序:

int main(){
    ifstream fin("in.txt");
    
    int totalNum;
    string tStr;
    getline(fin, tStr);

    totalNum = atoi(tStr.c_str());

    DonativeInfo *pDI = new DonativeInfo[totalNum];
    
    for(int idx=0; idx<totalNum; ++idx)
        fin >> pDI[idx];

    cout << endl << "捐款数大于等于10000的捐款人如下:" << endl << endl;
         cout << "姓名" << "\t\t\t" << "数目" << endl;
    
    for(idx=0; idx<totalNum; ++idx){
       if(pDI[idx].GetNum() >= 10000)
    cout << pDI[idx].GetName() << "\t\t" << pDI[idx].GetNum() << endl;
    }

    cout << endl;
    delete [] pDI;

    return 0;
}
2008-08-11 21:24
xlh5225
Rank: 2
等 级:论坛游民
威 望:2
帖 子:188
专家分:25
注 册:2007-8-14
收藏
得分:0 
有一点要注意:getline和流的重载操作符>>不要混用,这样会改变流的状态...
2008-08-11 21:26
wylog
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-8-5
收藏
得分:0 
atoi(tStr.c_str())
哦 原来关键是我没有考虑用atoi吧
2008-08-25 01:40
快速回复:关于文件输入流的一道题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022952 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved