如何在C++中创建一个没有路径名的文件夹,只有要创建的文件夹的名称
How do you create a folder in C++ with no path name just the name of the folder you want to create?
可能的重复项:
在 C 或 C++ 中创建目录
我想创建一个标题为"BobtheBuilder"的文件夹。然后我想在其中创建一个文本文件。我想在不知不觉中这样做。我不想输入:
ofstream out("C:/MyComputer/User/Jeff/etc/BobtheBuilder/NewFile.txt");
我希望它只是这个区域的本地版本,我的可执行文件包含如下:
ofstream out("/BobtheBuilder/NewFile.txt");
这可能吗?我必须知道整个路径名才能进行文件管理吗?我觉得这是可能的,因为您可以创建或打开与程序位于同一目录中的文件,例如:
ifstream inf("NewFile.txt");
还是有一个特殊的关键字填充前面的路径,如下所示:
ifstream inf("FILLIN/BobtheBuilder/NewFile.txt");
谢谢
您绝对可以指定相对路径,例如"BobtheBuilder/NewFile.txt",而无需指定整个路径。但是,您需要先创建文件夹,然后再创建文件。由于创建文件夹是特定于平台的,并且由于您使用的是Windows,因此您需要使用"BobtheBuilder"作为其参数调用CreateDirectory函数。然后,将在程序的默认工作目录中创建该文件夹,该目录与可执行文件所在的文件夹相同。在创建文件夹和文件之前,您可以使用 SetCurrentDirectory 函数更改此工作目录。
要创建目录,您可以使用 C 函数:
int mkdir(const char *pathname, mode_t mode);
如果你可以使用Boost,那么它真的变得更容易,更C++友好:
bool create_directories(const path& p);
// usage example
boost::filesystem::create_directories("./BobtheBuilder");
正如您在问题中提到的,您可以使用绝对路径和相对路径。这只取决于你的意图是什么。在您的情况下,您可以只做:
boost::filesystem::create_directories("./BobtheBuilder");
ofstream out("./BobtheBuilder/NewFile.txt");
根本不需要指定绝对路径。
如果您经常需要管理路径,Boost 提供了许多有用的路径管理工具。举个例子,考虑一下你在问题中提到的问题:你想获取当前目录的完整路径,然后附加一个相对路径。您可以非常轻松地执行此操作:
#include <boost/filesystem.hpp>
namespace fs = boost::filesystem;
...
fs::path curr_abs_path = fs::current_path();
fs::path rel_path = "foo/bar";
fs::path combined = (curr_abs_path /= rel_path);
cout << combined << endl;
假设当前目录是/tmp/,前面的代码片段将打印:
/tmp/foo/bar
operator/=
负责追加两条路径并返回组合结果。
- 如何在文档文件夹中创建目录
- 如何从Windows控制台调用.exe(C++)以在不同的目录(或任何目录)中创建文件夹?
- 如何使用Windows API C++更改已创建的文件夹/目录安全权限
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- 在c++编程中的文件夹中创建文件
- 创建文件夹结构
- 在C++中创建文件夹
- 如何使用 c++ 创建对"everyone"具有共享访问权限的文件夹
- 如何在 C++ 中创建一个适用于 Windwos 和 Linux 的文件夹(目录)
- 如果C 中不存在,如何创建文件夹
- 如何将用于创建文件的文件的路径提供给C++中的其他文件夹
- 如何在%appdata%中创建文件夹,在其中创建.bat文件,然后执行它?
- 无法创建将包含日志文件的文件夹
- Windows 7:MFC ActiveX 控件不会在任何文件夹中创建文件
- 嵌入 LuaJIT - 创建包含文件夹
- C - 创建文件夹方法
- 如何在Visual Studio C 2012中创建文件夹
- 如何以编程方式为应用程序创建文件夹,以使用 BOX REST API 在其中上传内容
- 为什么Qt在Qt内部运行时或调试时不会创建文本文件,而是直接从调试文件夹创建文本文件
- 如何从文件文件夹创建自定义文件类型