我正在尝试使用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
谢谢!
答案 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())
。