| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1339 人关注过本帖
标题:问下:大家是如何读取文件中输入的下一行的?
只看楼主 加入收藏
BBGASJ
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-8-15
结帖率:100%
收藏
 问题点数:0 回复次数:4 
问下:大家是如何读取文件中输入的下一行的?
这是我的程序,作用是从文本中读取第一行确定循环次数,之后循环读入每一行的数据(其中每两行为一组):

#include<iostream>
#include<fstream>
#include<cstdlib>

const int SIZE=60;

int main()
{
    using namespace std;
   
    char filename[SIZE];
    ifstream inFile;
   
    cout << "Enter name of data file:";
    cin.getline(filename,SIZE);
    inFile.open(filename);
   
   
    if(!inFile.is_open())
    {
        cout << "Could not open the file " << filename<<endl;
        cout << "Program terminating.\n";
        exit(EXIT_FAILURE);
    }
   
    struct person
    {
        string name;
        double donation;
    };
   
    int people;
   
    inFile >> people;
   
   
    person * person_p = new person[people];
   
    int i;
    string temp;
        
    for(i = 0;i < people;i++)
    {
        getline(inFile,temp);
        getline(inFile,person_p[i].name);
        inFile >> person_p[i].donation;
    }
   
    cout << "\n\n\nGrand Patrons\n\n";
   
    int number_1 = 0;
   
    for(i = 0;i < people;i++)
    {  
        if(person_p[i].donation >= 10000)
        {
            cout << person_p[i].name<<"\t\t\t" << person_p[i].donation << endl;
            number_1++;
        }
        
        if( (0 == number_1) && (people-1 == i) )
            cout << "none\n";
    }
   
    cout << "\n\n\nPatrons\n\n";
   
    int number_2=0;
   
    for(i = 0;i < people;i++)
    {
        if(person_p[i].donation < 10000)
        {
            cout << person_p[i].name << "\t\t\t" << person_p[i].donation << endl;
            number_2++;
        }
        
        if( (0 == number_2) && (people-1 == i) )
            cout << "none\n";
    }
        
    system("pause");
   
    return 0;
}

        
文件abc.txt中的内容为:
3
BBGASJ
50000
Bill Gates
88888
ARAGAKI YUI
5000

有两点疑惑:
1,之前输入循环中没加getline(inFile,temp);导致输出string全为空,double全为0,但按getline(inFile,person_p[i].name);每次也是读取一行,即第一次把空行当作string读入,第二次本应读取double,但遇到第二行的B,导致类型不匹配,输入流关闭。可为什么之后两组输出也为空和0?
2,想请问大家是如何控制换行读取的?

[[it] 本帖最后由 BBGASJ 于 2008-9-20 16:29 编辑 [/it]]
搜索更多相关主题的帖子: 文件 输入 
2008-09-20 16:24
BBGASJ
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-8-15
收藏
得分:0 
没人来帮帮我吗

Stay Hungry. Stay Foolish.
2008-09-21 21:58
小辛巴
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-8-30
收藏
得分:0 
是不是可以试一下虚函数呢,也许函数参数属性不匹配,不能实现预想的功能吧,呵呵
下次写程序,加点注释,也方便查看哈

[[it] 本帖最后由 小辛巴 于 2008-9-21 22:50 编辑 [/it]]
2008-09-21 22:46
BBGASJ
Rank: 1
等 级:新手上路
帖 子:74
专家分:0
注 册:2007-8-15
收藏
得分:0 
回复 3# 小辛巴 的帖子
感谢你的回答,我是初学者,还没接触到虚函数,不过还是感谢

Stay Hungry. Stay Foolish.
2008-09-22 22:04
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:0 
没注解,懒得看,而且想睡觉了
getline();//使用第一次是读入第一行
getline();//使用第二次时读入第二行
读特定的,比如双数行
i=100;
while(i--)
{
 getline(ifstream,file_string);
 if(i%2)//除余方式
 cout<<file_string//把数据输出去
}
2008-09-22 22:20
快速回复:问下:大家是如何读取文件中输入的下一行的?
数据加载中...
 
   



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

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