gpt4 book ai didi

c++ - 从 C++ 读取垃圾文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:08 26 4
gpt4 key购买 nike

#include <bits/stdc++.h>
using namespace std;

int main(int count, char* argv[])
{
if(count!=2)
{
// print_syntax(argv[0]);
}
else if(count==2)
{
string file_name=argv[1];
// cout<<file_name<<endl;
string file_directory="~/.local/share/Trash/info/"+file_name+".trashinfo";
cout<<file_directory<<endl;
ifstream myReadFile;
myReadFile.open(file_directory);
char output[100];
if (myReadFile.is_open())
{
cout<<"here";
while (!myReadFile.eof())
{


myReadFile >> output;
cout<<output;


}
}
else
{
cout<<"Not working";
}
myReadFile.close();
}
}

我正在尝试从垃圾箱中读取一个文件,该文件还有两个子文件夹,信息文件夹包含已删除文件的元数据,扩展名为 .trashinfo

但由于某种原因,我无法在此程序中打开该文件。

root@kali:~/projects/Linux-Commands/Restore# ./a.out hero
~/.local/share/Trash/info/hero.trashinfo
Not working
root@kali:~/projects/Linux-Commands/Restore# vi ~/.local/share/Trash/info/hero.trashinfo

通过使用这个 vi 命令,我可以轻松地在终端中打开它,甚至对其进行编辑。

最佳答案

您不能在 C++ 程序中使用 ~ 来引用用户的主目录 - 该字符由 shell 扩展,而不是一般操作系统扩展。

您应该指定绝对路径,或使用 getenv,如下所示 here .

一个更简单的解决方法是将文件的完整路径传递给您的程序,而不必担心在程序中修改它(file_directory = argv[1],而不是您当前的程序)。然后,您可以从 shell 中输入

a.out "~/.local/share/Trash/info/hero.trashinfo"

shell 将按照您的预期扩展 ~。引号是为了确保如果路径中有空格,则完整路径将作为单个字符串传入,而不是被 shell 分割为多个参数。

关于c++ - 从 C++ 读取垃圾文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45278465/

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