如何在子目录中创建文本文件?
How to create a text file in subdirectory?
我需要在程序的子目录中创建一个文本文件来写入一些数据。下面的行不起作用,文件夹未创建。即使我手动创建子文件夹,也不会创建该文件。没有子文件夹,此命令可以完美运行。
FILE* f;
if (fopen_s(&f, "/Sandbox/OUTPUT.txt", "w"))
return 1; // Nothing happens
if (fopen_s(&f, "//Sandbox//OUTPUT.txt", "w"))
return 1; // Nothing happens
if (fopen_s(&f, "\Sandbox\OUTPUT.txt", "w"))
return 1; // Nothing happens
if (fopen_s(&f, "SandboxOUTPUT.txt", "w"))
return 1; // Nothing happens
if (fopen_s(&f, "Sandbox/OUTPUT.txt", "w"))
return 1; // Nothing happens
if (fopen_s(&f, "SandboxOUTPUT.txt", "w"))
return 1; // Creates a file named 'SandboxOUTPUT.txt'
如何正确编码?
如果你有一个启用了 C++17 的编译器,请使用 std::filesystem。这里有一些你可以用它做的事情的介绍,这些事情应该是不言自明的,但如果有什么不清楚的地方,请问,我会尽力澄清。
#include <filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::filesystem;
int main() {
// create a path in an OS agnostic manner
fs::path dir_path = fs::path(".") / "Sandbox";
fs::directory_entry dir(dir_path);
if(dir.exists()) {
std::cout << dir << " already existsn";
if(dir.is_directory() == false) {
std::cerr << "... but is not a directoryn";
return 1;
}
} else {
std::cout << "creating dir " << dir << "n";
if(fs::create_directory(dir) == false) {
std::cerr << "failed creating " << dir << "n";
return 1;
}
}
{
// create a path to your file:
fs::path filename = dir_path / "OUTPUT.txt";
std::cout << "creating file " << filename << "n";
std::ofstream os(filename);
if(os)
os << "Hello world.n";
else {
std::cerr << "failed opening " << filename << " for writingn";
return 1;
}
}
}
我想你是在Windows环境中工作。
如果Sandbox
文件夹是当前目录的子目录,则应使用"Sandbox\OUTPUT.txt"
或".\Sandbox\OUTPUT.txt"
。
如果它是驱动器根目录中的文件夹,请使用"C:\Sandbox\OUTPUT.txt"
。
换句话说,反斜杠需要通过另一个反斜杠进行转义。
如果要先创建目录,请尝试:
mkdir(".\Sandbox")
或mkdir("C:\Sandbox")
.
相关文章:
- 文本文件中的单词链表
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何在c++中从文本文件中逐行读取整数
- 从文本文件中读取时钟时间和事件时间并进行处理
- 如何从文本文件中读取值和数组
- 如何在C++中确定文本文件中的元素是字符还是数字
- C++试图读取一个文件并输出到另一个文本文件
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 已修改的LinkedList未在文本文件本身中更新
- C++文本文件的获取线
- 为什么C++的文件 I/O 在读取文本文件时忽略初始空行?我怎样才能让它不这样做?
- 打印逐行存储的文本文件
- C++文本文件输入