关于txt文件中数据读取的有关问题,帮忙!
关于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。
------解决方案--------------------
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文件。