用C ++写入文件

时间:2016-04-13 15:45:26

标签: c++ file fstream

我正在尝试使用fstream写入文件,但我的代码无效。你能帮我解决我做错的事吗?

void mem_test()
    {
            fstream filepointer;
            string buffer;

            if ( filepointer.is_open() )
            {
                    filepointer.open("test.t", ios::in | ios::out | ios::binary);
                    getline(filepointer, buffer);
                    getline(filepointer, buffer);

                    filepointer << "TEST!" << endl;
            }
            filepointer.close();
    }

我的文件test.t(Perimssion在linux中读写文件):

Example Line 1
Example Line 2
Example Line 3
Example Line 4

谢谢!

2 个答案:

答案 0 :(得分:2)

在实际打开文件之前,您正在检查文件是否已打开,因此应该是:

void mem_test()
{
        fstream filepointer;
        string buffer;
        filepointer.open("test.t", ios::in | ios::out | ios::binary);
        if (filepointer.is_open())
        {
                getline(filepointer, buffer);
                getline(filepointer, buffer);
                filepointer << "TEST!" << endl;
                filepointer.close();
        }
}

答案 1 :(得分:1)

在这种情况下,无需首先进行if ( filepointer.is_open() )检查,因为文件流尚未打开文件,因此您需要先检查false if块中的代码将不会被执行(打开与您首先要检查的内容相矛盾的文件)。因此,首先打开文件,然后检查流状态是否有错误(即使用if(filepointer.is_open())