首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求更简洁算法解决方法

2012-02-05 
求更简洁算法一个txt文件读取程序txt文件如下。1|2|。。。。|3|4|5|。。。。|6|4|5|。。。。|6|要读取某行某列的值,如下

求更简洁算法
一个txt文件读取程序
txt文件如下。
1|2|。。。。|3|
4|5|。。。。|6|
4|5|。。。。|6|
要读取某行某列的值,如下,这个算法没问题,但是速度太慢,能不能精简一下呢。

                ReadFile(string   strinfo,   int   y,int   x)
{
                //TODO:   Add   your   source   code   here
                string   cset1= "\n ";
                string   cset2= "| ";
                int   DataLocX[1];
                int   DataLocY[1];


                int   first1   =0;
                int   first2   =0;
  //-----------------------------------------------查找行
                DataLocY[0]=0;
              for(int   i=1;   i <=y;i++)
                  {

                    first1=strinfo.find(cset1,first1);
                    if   (i==y-1){DataLocY[0]=first1+1;}
                    first1=first1+1;
                      }
                  DataLocY[1]=first1-1;
                  string   txtLine=strinfo.substr(DataLocY[0],DataLocY[1]-DataLocY[0]);

    //----------------------------------------------查找列
                  DataLocX[0]=0;
                  for(int   j=1;   j <=x;j++)
                  {

                    first2=txtLine.find(cset2,first2);
                    if   (j==x-1){DataLocX[0]=first2+1;}
                    first2=first2+1;
                      }
                    DataLocX[1]=first2-1;
                    txtCell=txtLine.substr(DataLocX[0],DataLocX[1]-DataLocX[0]);//取值
    //------------------------------------------------


[解决办法]
每行宽度都一样么?
要是一样就容易了,
申请一个二维数组,每一行方文件中每行的数据。
然后直接去内容就行了。
[解决办法]
没仔细看你的代码,但是:

一、如果你只需要寻找一次数据
++--那么,一行一行读,没有低复杂读的方法

二、如果你只读一次,文件大小在10万行以下,按行读都觉得慢
++--那么,你的代码写的确实有问题。

三、如果你需要经常操作这个文件
++--那么,使用一个内存缓存,保存最近解析过的内容。
++--或者,使用数据库。

四、如果你经常需要操作这个文件,并且文件大小在100万行以下
++--那么,全部读进内存。

热点排行