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)
该~是你使用自动扩大到你的壳处理$HOME目录.
std::ofstream不处理文件~路径中的字符,因此只有您的第一个示例工作.
如果您使用命令行将文件路径传递给程序argv[1],并从shell调用它,您将~自动扩展.
根据上面所述,如果您想自己扩展~角色,可以使用该std::getenv()函数来确定其值$HOME,并将其替换为该值.