[英]How do I have to describe an absolute path to a file in C++?
我想用 C++ 做一个程序,当它被执行时(从任何地方),修改一个非常具体的路径(并且总是相同的)中的文本文件。 为此,我在 C++ 中定义了以下函数:
void ChangeCourse(string course)
{
ofstream active_course;
active_course.open("~/.universidad/curso_activo.txt");
if (!curso_activo)
cout << "Error: cant't open the file" << endl;
else
{
active_course << course;
curso_activo.close();
}
}
在执行调用该函数的程序时,我收到消息Error: cant't open the file
and, 事实上,没有创建任何文件。
我如何定义文件的路径,以便程序可以读取并找到它,而不管程序在哪里调用。
请注意,我在 macOS 中运行该程序。
希望我已经解释了我自己,并提前感谢你。
~
由外壳程序(也就是说,由命令行解释器)扩展(到您的主目录)。 它本身不是 *nix API 的一部分。 (macOS 基于 BSD Unix。)
相反,您可以使用getenv()
扩展 HOME 环境变量,并在打开它之前附加路径的其余部分(包括文件名)。
你不能使用~/.
引用用户的主目录,就像您在命令外壳中所做的那样。
需要指定完整路径,例如/home/zjanny/test.txt
在 C++17 中,您可以使用文件系统库并对路径进行硬编码,如果这是您真正想要做的。
#include <filesystem>
#include <fstream>
namespace fs=std::filesystem;
int main() {
fs::path p = "your-absolute-path-goes-here"; //
if(fs::exists(p)) {
std::ofstream file(p);
file << "Hello world!" << "\n";
}
return 0;
}
除非您要查找的文件/文件夹位于运行程序的当前目录中,否则您必须传入绝对文件路径。
在 macOS 中,您应该能够选择要打开的文件并按cmd+i找到文件的绝对路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.