使用C ++中的fstream创建和读/写文件

时间:2015-04-21 19:16:06

标签: c++ fstream

我正在寻找创建一个文件,然后打开它并重写它。

我发现我可以通过简单地创建一个文件:

#include <iostream>
#include <fstream>  
using namespace std;
int main()
{
ofstream outfile ("test.txt");
outfile << "my text here!" << endl;
outfile.close();
return 0;
}

虽然这可以创建测试文件,但我无法打开文件然后进行编辑。即使在创建文件后,此(下面)也不起作用。

outfile.open("test.txt", ios::out);
if (outfile.is_open())
{
    outfile << "write this to the file";
}
else
    cout << "File could not be opened";
outfile.close;

2 个答案:

答案 0 :(得分:1)

如果&#34;不起作用&#34;你的意思是文本被覆盖而不是附加,你需要指定std::ios::app作为打开调用的标志之一,让它附加更多数据而不是覆盖所有内容。

outfile.open("test.txt", ios::out | ios::app);

以下示例适用于我:

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
  ofstream outfile ("test.txt");
  outfile << "my text here!" << endl;
  outfile.close();

  outfile.open("test.txt", ios::out | ios::app );
  if (outfile.is_open())
     outfile << "write this to the file" << endl;
  else
     cout << "File could not be opened";

  outfile.close();

  return 0;
}

生成以下文本文件:

my text here!
write this to the file

答案 1 :(得分:0)

你也可以用FOPEN做到这一点。有些编译器会注意到它的功能是OBSOLETE或DEPRECATED,但对我来说它的工作正常。

/* fopen example */
#include <stdio.h>
int main ()
{
  FILE * pFile;
  pFile = fopen ("myfile.txt","w");
  if (pFile!=NULL)
  {
    fputs ("fopen example",pFile);
    fclose (pFile);
  }
  return 0;
}

此处有更多信息:http://www.cplusplus.com/reference/cstdio/fopen/