提交和使用函数tellp()

时间:2018-01-18 17:04:12

标签: c++ file

#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行的正确位置)。我怎么能删除这个错误?

1 个答案:

答案 0 :(得分:0)

cppreference开始,这是预期的行为:

  

app:在每次写入之前寻找流的结尾   [...]
  ate:在打开后立即寻求到流的结尾

如果您希望在编写任何内容之前搜索文件,则需要使用ate打开文件。