| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 552 人关注过本帖
标题:如何获取文件中的数据
只看楼主 加入收藏
yqjohn
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-11-22
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:8 
如何获取文件中的数据
程序代码:
#include <fstream>
using namespace std;
int main()
{
    std::ifstream infile;
    infile.open("a");
   

    return 0;
}


打开了a文件后,如何将a文件的每类数据(每一纵行数据类型相同)存入vector或其他容器内
新手分不多球包涵,求实例代码




[ 本帖最后由 yqjohn 于 2012-11-3 12:03 编辑 ]
2012-11-03 12:01
yqjohn
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-11-22
收藏
得分:0 
a中的内容
1    6    5    887431973
1    10    3    875693118
1    12    5    878542960
1    14    5    874965706
1    17    3    875073198
2012-11-03 12:02
超级菜鸟手
Rank: 3Rank: 3
来 自:太阳系
等 级:论坛游侠
帖 子:34
专家分:109
注 册:2012-10-24
收藏
得分:0 
试看看这个呗 ~

vector<string> file;
     string temp;

     fstream infile("itemlist.txt", ios::in);

     int Size = 0;
     string item1[100];
     while( !infile.eof() ){   //读取文件中的数据
            getline(infile, temp);
            file.push_back(temp);
            item1[Size] = temp; //记录文件中的数据
            Size++;
            }// done reading file
     infile.close();

     for(int i = 1; i < Size; i++){      
            cout<<i<<". "<<item1[i]<<endl; // 输出文件中的数据
             }
2012-11-03 12:13
yqjohn
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-11-22
收藏
得分:0 
我的文档中数据量行数很大嗯,将近好几千行
string item1[100];
有什么方法可以检测文件的行数并返回其值,大哥谢谢啦
2012-11-03 12:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
程序代码:
#include <vector>
#include <fstream>
#include <iostream>
#include <algorithm>
#include <iterator>

struct foo
{
    int v1, v2, v3, v4;
};

std::istream& operator>>( std::istream& is, foo& f )
{
    return is >> f.v1 >> f.v2 >> f.v3 >> f.v4;
}
std::ostream& operator<<( std::ostream& os, const foo& f )
{
    return os << f.v1 << '\t' << f.v2 << '\t' << f.v3 << '\t' << f.v4;
}

int main()
{
    std::vector<foo> vs;

    // 从文件中输入
    std::copy( std::istream_iterator<foo>(std::ifstream("a")), std::istream_iterator<foo>(), std::back_inserter(vs) );
    // 向屏幕输出
    std::copy( vs.begin(), vs.end(), std::ostream_iterator<foo>(std::cout,"\n") );

    return 0;
}

如果看不懂,可以这样:
程序代码:
#include <vector>
#include <fstream>
#include <iostream>

struct foo
{
    int v1, v2, v3, v4;
};

int main()
{
    std::vector<foo> vs;

    // 从文件中输入
    {
        std::ifstream infile("a");
        if( infile )
        {
            for( foo f; infile>>f.v1>>f.v2>>f.v3>>f.v4; )
                vs.push_back( f );
        }
    }
    // 向屏幕输出
    {
        for( std::vector<foo>::const_iterator itor=vs.begin(); itor!=vs.end(); ++itor )
        {
            const foo& f = *itor;
            std::cout << f.v1 << '\t' << f.v2 << '\t' << f.v3 << '\t' << f.v4 << '\n';
        }
        std::cout << std::flush;
    }

    return 0;
}

2012-11-03 12:26
超级菜鸟手
Rank: 3Rank: 3
来 自:太阳系
等 级:论坛游侠
帖 子:34
专家分:109
注 册:2012-10-24
收藏
得分:1 
试看这样
   
     string item1;
     string temp;
     fstream infile("itemlist.txt", ios::in);
          while( !infile.eof() ){   //读取文件中的数据
            getline(infile, temp);
            item1 = temp;
            cout<<item1<<endl;
            }// done reading file
     infile.close();
2012-11-03 12:34
超级菜鸟手
Rank: 3Rank: 3
来 自:太阳系
等 级:论坛游侠
帖 子:34
专家分:109
注 册:2012-10-24
收藏
得分:0 
顶五楼的
小弟对 <vector> 和 <iterator> 还真是头晕
2012-11-03 12:36
yqjohn
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-11-22
收藏
得分:0 
程序代码:
    {
        std::ifstream infile("a");
        if( infile )
        {
            for( foo f; infile>>f.v1>>f.v2>>f.v3>>f.v4; )
                vs.push_back( f );
        }
    }
这里的for执行完后vs.pushback后再用for
那这个if语句也只能执行一次呀
等到数据用光了是不是是不是还会用pushback

这里并没有一行一行读出来再pushback
是不是读每个字符串读到回车或者空格就结束了饿?

问这些很菜的问题,希望大哥能见谅


[ 本帖最后由 yqjohn 于 2012-11-3 12:50 编辑 ]
2012-11-03 12:45
yqjohn
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-11-22
收藏
得分:0 
不错了,特别是5楼,谢谢了
上面的问题自己测试下好了
2012-11-03 13:11
快速回复:如何获取文件中的数据
数据加载中...
 
   



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

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