我的代码目前执行如下操作:
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);
最佳答案
你想要告诉p
。这可用于输出流(例如,ostream、ofstream、stringstream)。
有一个匹配的 tellg
可用于输入流(例如,istream、ifstream、stringstream)。请注意,stringstream
同时支持输入和输出,因此它同时具有 tellp
和 tellg
。
至于保持两个直线,p
表示 put
而 g
表示 get
,所以如果您想要使用 tellg
的“获取位置”(即读取位置)。如果您想要 put
(写入)位置,您可以使用 tellp
。
注意fstream
同时支持输入和输出,所以它同时包含了tellg
和tellp
,但是你只能调用其中之一任何给定时间。如果最近的操作是写入,那么您可以调用 tellp
。如果最近的操作是读取,您可以调用 tellg
。否则,您不会获得有意义的结果。
关于C++ 查找 ofstream 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16825055/