用于复制文件的C++代码::对相对地址(代字号)感到困惑

Mah*_*han 2 c++ file-io relative-path tilde file-copying

我写了一个简单的程序来复制文件.它有两个字符串:

1)用于源文件的路径.

2)用于复制文件的名称.

当我给它绝对或相对路径(没有波形符号(〜))时,它正常工作.

但是当我给它一个带波形符号(〜)的相对路径时,它找不到文件的地址.这让我感到困惑!

这是我的示例输入:

1)/Users/mahan/Desktop/Copy.cpp

2)〜/ Desktop/Copy.cpp

第一个正常工作但第二个没有.

这是我的代码:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    string path, copy_name;
    cin >> path >> copy_name;
    ifstream my_file;
    ofstream copy(copy_name);
    my_file.open(path);
    if(my_file.is_open())
    {
        copy << my_file.rdbuf();
        copy.close();
        my_file.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

πάν*_*ῥεῖ 6

~是你使用自动扩大到你的壳处理$HOME目录.

std::ofstream不处理文件~路径中的字符,因此只有您的第一个示例工作.


如果您使用命令行将文件路径传递给程序argv[1],并从shell调用它,您将~自动扩展.


根据上面所述,如果您想自己扩展~角色,可以使用该std::getenv()函数来确定其值$HOME,并将其替换为该值.