gpt4 book ai didi

用于复制文件 : : confused about relative address (tilde) 的 C++ 代码

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:23 26 4
gpt4 key购买 nike

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

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();
}
}

最佳答案

~ 由您用来自动扩展到您的 $HOME 目录的 shell 处理。

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


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


综上所述,如果想自己扩展~字符,可以使用std::getenv()函数来确定 $HOME 的值,并将其替换为该值。

关于用于复制文件 : : confused about relative address (tilde) 的 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30413942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com