使用流在C++中写入文件

8
我想把一些文本输出到文件中。我听说流式处理数据比创建大字符串和输出更好。目前我正在创建一个大字符串并将其输出到文件。请求提供如何使用C++流式处理数据并写入文件的示例代码。
谢谢!

2
为什么不提供你目前的进展呢?也许你已经接近成功了...! - Nick
问题是你的代码有性能问题吗?如果没有,我会让它保持原样。 - Naveen
2个回答

22
#include <fstream>

int main()
{
   std::ofstream fout("filename.txt");
   fout << "Hello";
   fout << 5;
   fout << std::endl;
   fout << "end";
}

你的文件现在包含了这些内容:

Hello5 
end

有关详细信息,请参阅std::ofstream

希望对你有所帮助


7

文件写入已经使用了缓冲。如果对您来说不够高效,实际上可以修改filebuf,例如增加其大小或使用自定义的filebuf。

避免做不必要的缓冲刷新,这是通过endl完成的。这是文件写入最常被“滥用”的特性。

创建输出文件流的最简单方法是:

#include <fstream>

int main( int argc, char * argv[])
{
   if( argc > 1 )
   {
      std::ofstream outputFile( argv[1] );
      if( outputFile )
      {
         outputFile << 99 << '\t' << 158 << '\n'; // write some delimited numbers
         std::vector< unsigned char > buf;
         // write some data into buf
         outputFile.write( &buf[0], buf.size() ); // write binary to the output stream
      }
      else
      {
         std::cerr << "Failure opening " << argv[1] << '\n';
         return -1;
      }
   }
   else
   {
      std::cerr << "Usage " << argv[0] << " <output file>\n";
      return -2;
   }
   return 0;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接