C++ 如何写回刚刚读取的csv文件(c+;+;)?
我试图写回以前在程序中读取的csv文件。该程序当前看起来如下所示:C++ 如何写回刚刚读取的csv文件(c+;+;)?,c++,csv,C++,Csv,我试图写回以前在程序中读取的csv文件。该程序当前看起来如下所示: ifstream file; file.open ("file"); e=0; while (file.good()) { getline ( file, infor,','); istringstream (infor) >> infoc; var1[e]=infoc; getline ( file, infor,',
ifstream file;
file.open ("file");
e=0;
while (file.good()) {
getline ( file, infor,',');
istringstream (infor) >> infoc;
var1[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var2[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var3[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var4[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var5[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var6[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var7[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var8[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var9[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var10[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var11[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var12[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var13[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var14[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var15[e]=infoc;
++e;
}
var1[e] = var1[e] + v1;
var2[e] = var2[e] + v2;
var3[e] = var3[e] + v3;
var4[e] = var4[e] + v4;
var5[e] = var5[e] + v5;
var6[e] = var6[e] + v6;
var7[e] = var7[e] + v7;
var8[e] = var8[e] + v8;
var9[e] = var9[e] + v9;
var10[e] = var10[e] + v10;
var11[e] = var11[e] + v11;
var12[e] = var12[e] + v12;
var13[e] = var13[e] + v13;
var14[e] = var14[e] + v14;
var15[e] = var15[e] + v15;
//WRITE TO compYTD
file.close();
ofstream ofile("file.csv");
for(int i = 0; i < e; i++)
ofile << var1[i] << ", " << var2[i] << ", " << var3[i] << ", " << ... endl;
ofile.close();
在关闭文件之前,我想将新的计算变量写回文件,删除以前读取的所有内容。是否有一个函数允许我这样做?还有一个单独的函数允许我写回这个文件,添加到已经存在的行上吗?我个人会关闭这个文件,然后使用如下方式写入新值:
ifstream file;
file.open ("file");
e=0;
while (file.good()) {
getline ( file, infor,',');
istringstream (infor) >> infoc;
var1[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var2[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var3[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var4[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var5[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var6[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var7[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var8[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var9[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var10[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var11[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var12[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var13[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var14[e]=infoc;
getline ( file, infor,',');
istringstream (infor) >> infoc;
var15[e]=infoc;
++e;
}
var1[e] = var1[e] + v1;
var2[e] = var2[e] + v2;
var3[e] = var3[e] + v3;
var4[e] = var4[e] + v4;
var5[e] = var5[e] + v5;
var6[e] = var6[e] + v6;
var7[e] = var7[e] + v7;
var8[e] = var8[e] + v8;
var9[e] = var9[e] + v9;
var10[e] = var10[e] + v10;
var11[e] = var11[e] + v11;
var12[e] = var12[e] + v12;
var13[e] = var13[e] + v13;
var14[e] = var14[e] + v14;
var15[e] = var15[e] + v15;
//WRITE TO compYTD
file.close();
ofstream ofile("file.csv");
for(int i = 0; i < e; i++)
ofile << var1[i] << ", " << var2[i] << ", " << var3[i] << ", " << ... endl;
ofile.close();
您写入文件的任何内容现在都将位于文件末尾 我可以关闭我读取的文件并打开同一个备份文件进行写入吗?这会添加到文件中的现有数据上还是删除/覆盖它?除非您指定其他内容,否则流的
将创建一个新的空文件。这就是我提出这种方法的原因。但是,必须在读取所有数据后执行此操作。如果要同时读写,文件上必须有两个不同的名称[好的,在Unix/Linux/MacOS类型的操作系统中不严格要求,但依赖它确实不太重要]难道没有以附加模式打开文件之类的东西吗?是的,这会在文件的末尾添加新值。但是你的问题要求“删除旧文件并写入新值”,这就是我所描述的。。。“附加”模式将属于“指定其他内容”模式。啊,没有阅读“问题部分”的后半部分。请参见编辑(几秒钟后)。