用C++创建文件

Uff*_*ffo 61 c++ file-io

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

谁能帮我?

Jam*_*son 100

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

流参考

为了完整起见,这里有一些示例代码:

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

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

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

outfile.close();
Run Code Online (Sandbox Code Playgroud)

您想使用std :: endl来结束您的行.另一种方法是使用'\n'字符.这两个东西是不同的,std :: endl刷新缓冲区并立即写入输出,而'\n'允许outfile将所有输出放入缓冲区,并可能稍后写入.

  • @Grant Limberg:'\n'还会写出正确的平台特定换行符 - 它由ostream内部结构合适翻译. (7认同)
  • 更不用说std :: endl也会写出正确的平台特定换行符字符串. (4认同)
  • 对Limberg:那是错的."endl:Effects:调用os.put(os.widen('\n')),然后调用os.flush()" - C++标准,27.6.2.7/1 (4认同)
  • @James Thompson:使用std :: endl的唯一原因是,如果您确实需要保证将缓冲区刷新到文件中。否则,这是不必要的悲观(文件I / O非常昂贵!)。 (2认同)
  • 当使用ofstream写入文件时,则不会实现文件锁定。其他人可以读取半写的文件,也可以其他人打开另一个流并同时写入。 (2认同)

Fre*_*ios 17

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

#include <fstream>

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

临时变量file在创建后立即销毁,因此关闭流,从而创建文件.


Sea*_*ght 11

#include <iostream>
#include <fstream>

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

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

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 使用std :: endl时,字符串中的\n是多余的. (12认同)
  • 流被破坏时刷新,因此在这种情况下std :: endl完全是多余的.但是,"返回0"绝对不是多余的.C中的常见情况是暗示"返回0",但C++不是这样. (4认同)
  • endl不仅仅是刷新:它也输出换行符.所以要么打印\n然后std :: flush,要么只使用std :: endl. (3认同)