我的代码目前执行以下操作:
ofstream fout;
fout.open("file.txt");
fout<<"blah blah "<<100<<","<<3.14;
//get ofstream length here
fout<<"write more stuff"<<endl;
有没有一种方便的方法可以找出在我上面指定的阶段写入的那一行的长度? (在现实生活中, int 100 和 float 3.14 不是常数,可以改变)。有什么好的方法可以做我想做的事吗?
编辑:按长度,我的意思是可以使用 fseek 使用的东西,例如
fseek(pFile, -linelength, SEEK_END);
最佳答案
你想要 tellp
。这可用于输出流(例如,ostream、ofstream、stringstream)。
有一个匹配的 tellg
可用于输入流(例如,istream、ifstream、stringstream)。请注意, stringstream
支持输入和输出,因此它同时具有 tellp
和 tellg
。
至于保持两个直线, p
表示 put
, g
表示 get
,所以如果你想要“获取位置”(即读取位置),你可以使用 tellg
。如果您想要 put
(写入)位置,请使用 tellp
。
请注意, fstream
支持输入和输出,因此它包括 tellg
和 tellp
,但您只能在任何给定时间调用其中之一。如果最近的操作是写入,则可以调用 tellp
。如果最近的操作是读取,则可以调用 tellg
。否则,你不会得到有意义的结果。