![](/img/trans.png)
[英]how to seek a specific line to append data or append data to last line in c++
[英]How to append to the last line of a file in c++?
使用 g++,我想将一些数据附加到文件的最后一行(但不创建新行)。 可能,一个好主意是向后移动光标以跳过现有文件中的 '\n' 字符。 但是此代码不起作用:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ofstream myfile;
myfile.open ("file.dat", fstream::app|fstream::out);
myfile.seekp(-1,myfile.ios::end); //I believe, I am just before the last '\n' now
cout << myfile.tellp() << endl; //indicates the position set above correctly
myfile << "just added"; //places the text IN A NEW LINE :(
//myfile.write("just added",10); //also, does not work correctly
myfile.close();
return 0;
}
请给我更正代码的想法。 先感谢您。 马雷克。
当你用app
打开时,不管tellp
告诉你什么,写作总是写在最后。
(“app”是“append”,不代表“写在任意位置”。)
你ate
(C++ 中更难以理解的名字之一),它只在打开后立即结束。
如果您想保留它,您还想添加最后的换行符。
而且您可能还想在覆盖它之前检查最后一个字符是否为换行符。
并且,在文本模式下按字符搜索会做一些奇怪的事情,如果你以二进制模式打开,你需要担心平台的换行约定。
处理文本比您想象的要困难得多。
(顺便说一句,您不需要在ofstream
上指定out
- “ofstream” 中的 “o” 负责处理。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.