| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:C++的一个关于提取文件的问题
只看楼主 加入收藏
我有5个大鸟
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-8-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
C++的一个关于提取文件的问题
[0] 43  55  99  69  64  84  95  56  36  13  
[1] 64  31  18  98  63  97  27  64  77  92  
[2] 20  53  43  56  96  9  98  7  19  97  
[3] 4  47  22  56  89  15  28  66  9  95  
[4] 94  53  40  41  53  13  95  90  40  39  
[5] 7  25  93  89  41  90  13  41  9  87  
[6] 42  67  16  62  92  12  33  34  60  78  
[7] 25  47  52  98  18  7  59  17  41  85  
[8] 29  52  29  57  47  61  18  52  73  75
这些数据存储于一个文件中,输入一个编号,然后程序把编号识别出来,再输出编号后面的一排数据。例如:输入3,输出文档中的 4  47  22  56  89  15  28  66  9  95。请问该如何解决,用指针还是?求程序例子,谢谢。
2015-08-09 11:41
kenierlee
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:58
专家分:474
注 册:2015-7-28
收藏
得分:0 
你先把你的代码贴出来,指出问题,不然你就是单纯的作业贴。
2015-08-09 21:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
開口閉口就是指針

授人以渔,不授人以鱼。
2015-08-09 21:40
我有5个大鸟
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-8-3
收藏
得分:0 
回复 2楼 kenierlee
无从下手
2015-08-11 12:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
幾天了,還沒弄出來啊?

授人以渔,不授人以鱼。
2015-08-11 17:08
li740207611
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2015-8-6
收藏
得分:0 
。。。。。一次读一行  把前三个字符进行匹配 不就行了 或者 一次读一个也可以进行匹配
2015-08-12 21:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
1. 是只需要提取一个数据,还是需要提取多个数据?
如果只需要提取一个数据,那么就不需要将文件内容保存到内存;
如果需要提取多个数据,为了加快速度就需要将文件内容保存到内存。
a. 如果需要提取多个数据,那么整个文件有多大?
如果比较小的话,所有文件内容全保存到内存
如果比较大的话,只保存每行开始的偏移值,以节约内存。
b. 从你的题目来看,应该不会出现相同的编号吧?

2. 序号的排列是有序的,还是无序的?
如果是有序的,就可以利用二分法来加快搜索速度

3. 序号最大是多少?有没有前导的0?如果有前导的0,那么类似于03和3算不算同一个序号?
这涉及到用什么类型来保存序号

4. 每一行是不是严格的[xx] xxx,不会出现乱七八糟的行?


如果你是做作业,以上皆不谈,啥也不考虑,就用最傻屄但最简单的方法:
程序代码:
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>

int main( void )
{
    size_t search_index = 3;

    std::ifstream file( "test.txt" );
    for( std::string line; std::getline(file,line); )
    {
        char bracket_left, bracket_right;
        size_t index;
        std::string content;

        std::istringstream is( line );
        is >> bracket_left >> index >> bracket_right;
        if( is && bracket_left=='[' && index==search_index && bracket_right==']')
            std::cout << is.rdbuf();
    }

    return 0;
}

2015-08-13 08:54
我有5个大鸟
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-8-3
收藏
得分:0 
回复 6楼 li740207611
1. 需要提取多个数据
a. 是比价大的文件
b. 不会出现相同的编号

2. 序号的排列是无序的
 

3.

4. 每一行是严格的[xx] xxx,不会出现乱七八糟的行


我不是为了应付作业,只是在思考解决方案时想参考网友的方法,谢谢你。
2015-08-14 23:02
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你把文件放上来看看。

授人以渔,不授人以鱼。
2015-08-18 22:09
快速回复:C++的一个关于提取文件的问题
数据加载中...
 
   



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

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