C ++文件处理:ios :: ate无法正常工作

时间:2015-11-15 11:13:07

标签: c++

在下面提到的代码中,当我应用ios :: out时它工作正常但是在ios :: ate的情况下不一样,它在文件中显示一些位置-1并且不能写入文件。

其次,peek()函数在哪里使用。

代码:

int main ()

{
    char p[80];
    fstream file("text1.txt",ios::in|ios::ate);
    cout<<"Starting position of the file is "<<file.tellg()<<endl;
    getch();
    if(file.is_open())
        cout<<"file is open\n";
    else
        cout<<"file is not open\n";
    getch();
    file.seekp(0);
    while(file>>p)
    {
        cout<<p<<endl;
    }
    file.clear();
    if(file<<"Now if we add text to the file")//Not working
        cout<<"\n Data entry possible\n";
    else
        cout<<"\n Data entry not possible\n";
    file.flush();
    cout<<"\nThe current position of the file pointer is "<<file.tellg()<<endl;//Showing position -1
    file.clear();
    file.seekp(0);
    if(file.eof())
        cout<<"\n the eof\n";
    while(file>>p)
    {
        cout<<p<<endl;
    }
    file.close();
    return 0;
}

输出:

Starting position of the file is 30
file is open
Now
if
we
add
text
to
the
file

Data entry not possible

The current position of the file pointer is -1
Now
if
we
add
text
to
the
file

1 个答案:

答案 0 :(得分:3)

ate并不意味着out因此,如果您要写入文件,则仍需要使用out

fstream file("text1.txt",ios::in|ios::out|ios::ate);