| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 257 人关注过本帖
标题:关于文件输入流的一道题目
收藏  订阅  推荐  打印 
wylog
Rank: 1
等级:新手上路
帖子:7
积分:176
注册:2008-8-5
关于文件输入流的一道题目

编写一个程序,从一个文本文档中读取捐款的的人数,名字已经捐款的数目,并从屏幕上输出。文本文档的内容如下:
4
Sam Stone
2000
Freida Flass
100500
Tammy Tubbs
5000
Rich Raptor
55000
注:首行为捐款人数。在下面的每一对中,第一行是名字,第二行是捐款数额。要求使用结构数组进行存储每对的信息。读取所有数据后,程序将显示捐款超过10000的捐款者的姓名及捐款数额。

我遇到的困难是,声明一个结构数组后,怎样从文件区分每行的字符和数字?或者什么时候回车之后开始读取一行,例如,读取第一个数字“4”之后,怎样开始另起一行读取,然后把这行存储在一个数组里。程序主要应用ifstream对文件的读取。
搜索更多相关主题的帖子: 文件  捐款  数字  数额  
2008-8-11 16:22
xlh5225
Rank: 2
等级:注册会员
帖子:141
积分:1630
注册:2007-8-14

类的定义:
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-8-11 21:24
xlh5225
Rank: 2
等级:注册会员
帖子:141
积分:1630
注册:2007-8-14

有一点要注意:getline和流的重载操作符>>不要混用,这样会改变流的状态...
2008-8-11 21:26
wylog
Rank: 1
等级:新手上路
帖子:7
积分:176
注册:2008-8-5

atoi(tStr.c_str())
哦 原来关键是我没有考虑用atoi吧
2008-8-25 01:40
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.050762 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved