繁体   English   中英

如何在 C++ 中描述文件的绝对路径?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM