求更简洁算法
一个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万行以下
++--那么,全部读进内存。