簡體   English   中英

如何寫回剛讀過的csv文件(C ++)?

[英]How to write back to a csv file that was just read (c++)?

我試圖寫回以前在程序中讀取過的csv文件。 該程序當前如下所示:

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();

(當然,如果將var1var2等放在數組或向量中會更容易-當然,在讀取時也是如此-只是getlineistringstream等的一個實例)

要附加文件(在文件末尾添加信息),可以使用ios_base::app作為ofstream的標志。 因此,再次關閉輸入文件,並在ofstream打開輸出:

    ofstream ofile("file.csv", ios_base::app); 

您寫入文件的所有內容都將位於文件末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM