在目录路径中使用 shell 符号

Use shell symbols in directory path

我想用我的程序打开一个文件,我想使用 shell 符号使我更容易找到该文件。在我在运行时使用它之前,有没有一种简单的方法可以让 shell 扩展我的文件路径。我正在寻找执行此操作的函数。

~/.foo.bar -> /home/someuser/.foo.bar

有没有一些简单的方法可以让 shell 在打开文件之前预处理文件路径?

您可以使用 wordexp:

#include <wordexp.h>

std::string wordexp(std::string var, int flags = 0)
{
    wordexp_t p;
    if(!wordexp(var.c_str(), &p, flags))
    {
        if(p.we_wordc && p.we_wordv[0])
            var = p.we_wordv[0];
        wordfree(&p);
    }
    return var;
}

int main()
{
    std::cout << wordexp("~/test") << '\n';
}