读书人

关于txt文件中数据读取的有关问题帮

发布时间: 2012-05-30 20:20:04 作者: rapoo

关于txt文件中数据读取的问题,各位大哥帮忙!!
text1.txt中有一万行八列,text2.txt中有一万行一列,怎样将text2.txt中这一列数据替换掉text1.txt中的第四列数据, 自己想这样实现,利用getline()函数分别读取两个文档中的一行,然后利用数组或指针进行替换,麻烦各位大哥帮忙!!
例如::

0 7 0.00000000 0.00010000 0.09060000 255 255 255
0 8 0.00000000 0.00010000 0.07440000 254 254 254
0 11 0.00000000 0.00010000 0.05770000 255 255 255
0 12 0.00000000 0.00010000 0.05790000 255 255 255
0 13 0.00000000 0.00010000 0.05820000 254 254 254
0 14 0.00000000 0.00010000 0.05870000 254 254 254
0 15 0.00000000 0.00010000 0.05930000 255 255 255

[解决办法]
大文件的读写,可以用文件内存映射。
分别读入数据,将替换后结果写在一个临时文件中,删除text1.txt,重命名临时文件为text1.txt。
[解决办法]

C/C++ code
#include<iostream>#include<string>#include<fstream>using namespace std;//将string类型变量按空格标识符存于二维数组void GetStringToChar(string str, char buf[8][100]){    int i,j=0,k=0,len = str.size();    for(i=0;i<len;i++)    {        if(str[i]==' ')        {            buf[j][k]='\0';            j++;            k=0;        }        else        {            buf[j][k++]=str[i];        }    }    buf[j][k]='\0';}int main(){    ifstream fin1("D:\\text1.txt");    ifstream fin2("D:\\text2.txt");    ofstream fout("D:\\result.txt");    string str1,str2;    int flag;    while(getline(fin1,str1)&&getline(fin2,str2)) //按行读入数据    {        char buf[8][100];        GetStringToChar(str1,buf);    //将text1中的的数据按行读入二位字符数组中操作        strcpy(buf[3],str2.c_str());        for(int i=0;i<7;i++)        {            fout<<buf[i]<<" ";        }        fout<<buf[7]<<endl;    }}
[解决办法]
除非是一些内存很小的嵌入式设备,不然一万行也没多大,可以一次全部读入内存。
[解决办法]
一次性把两个文件导出到内存的数据库结构,全部替换后再写入到text1.txt文件。

读书人网 >C++

热点推荐