用C ++创建文件


74

我想使用C ++创建文件,但是我不知道该怎么做。例如,我要创建一个名为的文本文件Hello.txt

谁能帮我?

Answers:


117

一种实现方法是创建ofstream类的实例,并使用该实例写入文件。这是网站的链接,其中包含一些示例代码,以及有关大多数C ++实现可用的标准工具的更多信息:

流参考

为了完整起见,下面是一些示例代码:

// using ofstream constructors.
#include <iostream>
#include <fstream>  

std::ofstream outfile ("test.txt");

outfile << "my text here!" << std::endl;

outfile.close();

您想使用std :: endl结束行。另一种选择是使用'\ n'字符。这两件事是不同的,std :: endl刷新缓冲区并立即写输出,而'\ n'允许outfile将所有输出放到缓冲区中,也许以后再写。


5
更不用说std :: endl还会编写正确的平台特定的换行字符串。
格兰特·林伯格

4
对林伯格:那是错误的。“ endl:效果:先调用os.put(os.widen('\ n')),然后调用os.flush()”-C ++标准27.6.2.7/1

9
@Grant Limberg:'\ n'还会编写正确的平台特定换行符-它由ostream内部构件适当翻译。
德鲁·霍尔

2
@James Thompson:使用std :: endl的唯一原因是,如果您确实需要保证将缓冲区刷新到文件中。否则,这是不必要的悲观(文件I / O非常昂贵!)。
德鲁·霍尔

2
当使用ofstream写入文件时,则不会实现文件锁定。其他人可以读取半写的文件,也可以其他人打开另一个流并同时写入。
罗尔夫·克里斯滕森

22

使用文件流执行此操作。关闭a时std::ofstream,将创建文件。我个人喜欢以下代码,因为OP仅要求创建文件,而不要写入文件:

#include <fstream>

int main()
{
    std::ofstream file { "Hello.txt" };
    // Hello.txt has been created here
}

临时变量file在创建后即被销毁,因此关闭了流并因此创建了文件。


1
这是正确的答案,问题只是:“如何用C ++创建文件”。
乔治Theodosiou

我知道@GeorgeTheodosiou,但是我不能我的回答那样写出来……无论如何,谢谢您的编辑建议。
Boiethios

12
#include <iostream>
#include <fstream>

int main() {
  std::ofstream o("Hello.txt");

  o << "Hello, World\n" << std::endl;

  return 0;
}

14
使用std :: endl时,字符串中的\ n是多余的。
格雷格·希吉尔

返回0;使用“ int main()”时函数中的冗余

3
endl所做的不只是刷新:它也输出换行符。因此,要么打印\ n然后输出std :: flush,要么仅使用std :: endl。

4
流在破坏时被刷新,因此在这种情况下std :: endl是完全多余的。但是,“返回0”绝对不是多余的。在C中通常会暗示“返回0”,但对于C ++而言并非如此。
汤姆

1
@Tom:basic.start.main:“如果控制在未遇到return语句的情况下到达main的末尾,则效果是执行:return 0;”。
cic

4

这是我的解决方案:

#include <fstream>

int main()
{
    std::ofstream ("Hello.txt");
    return 0;
}

即使没有流名称也将创建文件(Hello.txt),这与Boiethios先生的回答有所不同。


女士们,先生们,请允许我告诉您,当有人问要做什么以得到一些结果并阅读答案时,认为需要任何答案才能获得此结果。为此,答案应仅包括获得所需结果所需的内容。问候。
乔治·狄奥多西

注意:如果将原始“ Hello.txt”替换为已存在的变量,则不会为MSVC17进行编译。
kayleeFrye_onDeck

3
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

string filename = "/tmp/filename.txt";

int main() {
  std::ofstream o(filename.c_str());

  o << "Hello, World\n" << std::endl;

  return 0;
}

这是我必须执行的操作,以便为文件名使用变量而不是常规字符串。


0

使用c方法FILE *fp =fopen("filename","mode"); fclose(fp); 模式意味着a用于附加r用于读取,w用于写入

   / / using ofstream constructors.
      #include <iostream>
       #include <fstream>  
      std::string input="some text to write"
     std::ofstream outfile ("test.txt");

    outfile <<input << std::endl;

       outfile.close();

-1
/*I am working with turbo c++ compiler so namespace std is not used by me.Also i am familiar with turbo.*/

#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<fstream.h> //required while dealing with files
void main ()
{
clrscr();
ofstream fout; //object created **fout**
fout.open("your desired file name + extension");
fout<<"contents to be written inside the file"<<endl;
fout.close();
getch();
} 

运行该程序后,将在编译器文件夹本身的bin文件夹内创建该文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.