【问题标题】:C++ write text to file, how to multiple linesC ++将文本写入文件,如何多行
【发布时间】:2014-02-17 00:13:32
【问题描述】:

如何将多行写入文件? ......这就是我所拥有的......另外,有些行包括如下文字:#import <Foundation/Foundation.h>我将如何去做?下面的代码就是我现在所拥有的..

//Creates Config.h
        FILE * pFile;
        char *buffer = "//Empty Header File";
        char file [256];
        sprintf (file , "%s/Desktop/%s/Control.h",homeDir, game_name);
        pFile = fopen (file, "w+");
        fwrite (buffer , sizeof(char), sizeof(buffer), pFile);
        fclose (pFile);

【问题讨论】:

  • 你想使用C还是C++?
  • 如果你想像现在这样使用C函数,结束符是\n。如果要切换到c++,请使用std::endl
  • 您是否尝试将buffer 的内容附加到文件中?

标签: c++ writetofile


【解决方案1】:

由于这是 C++,我建议您使用标准 IOStreams 库并使用具体的文件流类 std::ifstreamstd::ofstream 来处理文件。它们实现RAII 来处理文件的关闭,并使用内置运算符和read()/write() 成员函数分别执行格式化和未格式化的I/O。此外,它们与标准 C++ 字符串类 std::basic_string 的使用很好地融合在一起。

话虽如此,如果我们在 C++ 中正确实现它,它应该是这样的:

std::string path     = "/Desktop/";
std::string filename = homeDir + path + game_name + "/Control.h";

std::ofstream file(filename, std::ios_base::app);

这处理打开文件,但正如您所说,您希望将多行写入文件。这很简单。只要你想换行就用'\n'

file << buffer << '\n';

如果您向我们提供有关您的问题的更多信息,我将能够在回答中详细说明。但在你这样做之前,以上内容就足够了。

【讨论】:

  • 我喜欢这个解释,但文件名不正确。就目前而言,结果将等同于std::string filename = homeDir + "%s/Desktop/%s/Control.h";,这不是我们想要的。它应该更像std::string filename = homeDir + "/Desktop/" + game_name + "/Control.h";
  • @Andrew 是的,我刚刚改变了它。谢谢。 :)
【解决方案2】:

改成

sprintf (file , "%s/Desktop/%s/Control.h\n",homeDir, game_name);

\n - 是换行符。

【讨论】:

    【解决方案3】:

    在 C++ 中你会这样做:

    ofstream fout("someplace/Control.h");
    fout << "a line of text" << endl;
    fout << "another line of text" << endl;
    

    我省略了一些细节,例如如何构造文件名以及如何以“附加”模式打开文件,但您应该尝试一次解决一个问题。

    【讨论】:

      猜你喜欢
      • 2012-03-03
      • 2013-04-09
      • 2018-10-19
      • 2022-01-28
      • 1970-01-01
      • 2022-06-23
      • 2021-12-04
      • 2021-12-30
      • 2017-05-28
      相关资源
      最近更新 更多