如何将数据附加到存在数据的文件中

时间:2014-06-14 11:37:08

标签: c++ c

我有一个文件,其结构为:

A.txt 1 
B.txt 2
C.txt 3

现在,我想打开文件并附加新数据,以便第二列添加2创建新数据,并使用C / C ++从该库中获取数据的相同行 例如

A.txt 1 3

其中3 = 1 + 2,1是第一行的数据,2是加权因子 最后,我的预期结果是

A.txt 1 3
B.txt 2 4
C.txt 3 5

我可以阅读并获取如下数据:

 FILE *fp;
 fp=fopen('input.txt','a+');//Is it correct for append and read mode
 if(!fp)
   return -1;
 int icheck=-1;
 int thirdNum=0;
 int num=0;
 icheck= fscanf(fp, "%s %d", filename,&num);
 thirdNum=num+2;
 //How to append it to file as same row with the A.txt or B.txt or C.txt

非常感谢

1 个答案:

答案 0 :(得分:1)

在C ++中你可以这样做:

#include <fstream>
#include <string>
#include <sstream>
#include <stdexcept>

int main() {

    std::string filename = "file.txt", line;
    std::ifstream ifs( filename.c_str(), std::ios::in);

    if (!ifs) // check if the file exists and can be read
        throw std::runtime_error( "cannot open the file");

    std::stringstream buffer; // buffer to store the lines

    while ( getline( ifs, line)) {

        int previous_value;
        std::istringstream iss(line.substr(line.find_last_not_of(" ")));
        iss >> previous_value;
        buffer << line << "\t" << (previous_value + 2) << "\n"; // add integer
    }

    std::ofstream ofs( filename.c_str(), std::ios::out); // ofstream buffer
    ofs << buffer.rdbuf(); // write to the file

    return 0;
}

如果可以避免将所有文件内容复制到临时缓冲区中,则可以提高内存效率。