我有一个文件,其结构为:
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
非常感谢
答案 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;
}
如果可以避免将所有文件内容复制到临时缓冲区中,则可以提高内存效率。