一遍又一遍地创建相同的文本文件

时间:2014-08-09 17:57:50

标签: c++ text-files

我需要创建一个在当前文件夹中写入文本文件的程序,该文本文件始终包含相同的信息,例如:

Hello,
This is an example of how the text file may look
some information over here
and here
and so on

所以我在考虑做这样的事情:

#include <iostream>
#include <fstream>

using namespace std;

int main(){
    ofstream myfile("myfile.txt");
    myfile << "Hello," << endl;
    myfile << "This is an example of how the text file may look" << endl;
    myfile << "some information over here" << endl;
    myfile << "and here" << endl;
    myfile << "and so on";

    myfile.close();
    return 0;
}

如果我的文本文件中的行数很少,那么问题是我的文本文件超过2000行,并且我不愿意为每行提供myfile << TEXT << endl;格式。

是否有更有效的方法来创建此文本文件? 感谢。

4 个答案:

答案 0 :(得分:1)

如果您有在同一文件中写入的问题,则需要使用追加模式。 即,您的文件必须像这样打开

ofstream myfile("ABC.txt",ios::app)

答案 1 :(得分:0)

如果你不关心&#39; \ n&#39;之间的差异。和std :: endl,然后你可以在你的函数之外创建一个包含你的文本的静态字符串,然后它就是:

myfile << str // Maybe << std::endl; too

如果您的文字非常大,您可以编写一个小脚本来格式化它,例如用&#34; \ n&#34;等更改每个换行符。

答案 2 :(得分:0)

您可以在C ++ 11中使用Raw字符串:

const char* my_text =
R"(Hello,
This is an example of how the text file may look
some information over here
and here
and so on)";

int main()
{
    std::ofstream myfile("myfile.txt");
    myfile << my_text;
    myfile.close();
    return 0;
}

Live example

或者,您可以使用一些工具为xxd -i

创建阵列

答案 3 :(得分:0)

听起来你真的应该使用资源文件。我不会在这里复制和粘贴所有信息,但是这个网站上已经有一个非常好的Q&amp; A,在这里:Embed Text File in a Resource in a native Windows Application

或者,您甚至可以将字符串粘贴到头文件中,然后将头文件包含在需要的位置: (假设没有C ++ 11,因为如果你这样做,你可以简单地使用Raw来使事情变得更容易,但是已经发布了答案 - 不需要重复)。

#pragma once
#include <iostream>

std::string fileData =
    "data line 1\r\n"
    "data line 2\r\n"
    "etc.\r\n"
;

如果您需要更复杂的字符,请使用std::wstring并在L前添加字符串。 您需要做的就是编写一个小脚本(或者甚至只使用Notepad ++,如果它是一次性的)用双反斜杠替换反斜杠,用反斜杠双引号替换双引号,并用\r\n"{line break}{tab}"替换换行符。整理开始和结束,你就完成了。然后将字符串写入文件。