函数 tellp() 的归档和使用

Filing and use of function tellp()

本文关键字:tellp 函数      更新时间:2023-10-16
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    ofstream out;
    int pos;
    out.open("myfile.txt",ios::app);
    pos=out.tellp();
    cout<<pos;
    int *arr=new int[pos+5];
    cout<<"Enter a line: ";
    char str[60];
    cin.getline(str,60); 
    out<<str;
    cout<<"Data written in file"<<endl<<"position of file "<<out.tellp()<<endl;
    out.close();
    delete []arr;
}

在这里,我以追加模式打开一个文件(因此文件中有一些数据(。但是在开始时,当我打印位置时,它显示为零,但是在文件中写入数据后,它显示了正确的位置(包括文件中先前数据的位置,但在第 10 行未显示正确的位置(。如何消除此错误?

根据 cpp 首选项,这是预期行为:

app:每次写入
之前都查找到流的末尾 [...]
ate:打开后立即查找到流的末尾

如果您希望在写入任何内容之前查找文件,则需要使用ate打开该文件。