我的ifstream似乎没有工作

mrs*_*mmr 1 c++ system-calls getline ifstream

这是我在实现它们之前用来测试方法的主文件.我试图获取目录中所有文件的列表,将它们写入txt文件(它在这里工作正常),然后从该文本文件中读取文件名.

using namespace std;

string sysCall = "", location = "~/Documents/filenames.txt";
string temp = "";
sysCall = "ls / > "+location;
system(sysCall.c_str());

ifstream allfiles(location.c_str());
allfiles.good();
getline(allfiles, temp);
cout<<temp<<endl;  //At this point, the value of temp is equal to ""

return -1;
Run Code Online (Sandbox Code Playgroud)

程序运行后,没有输出任何文本.从我在其他人的问题中读到的,这应该有效(但显然不是).我在这做错了什么?

编辑:allfiles.good()返回false,但我不明白为什么它会返回...

Rob*_*obᵩ 7

ifstream allfiles("~/Documents/filenames.txt");不会做你认为它做的事情.波形符号~不是文件名的一部分 - 它是由某些shell解释的特殊字符.您需要整个路径,其中没有~或包含$字符.

尝试设置location"/tmp/filenames.txt",或只"filenames.txt".

此外,如果您可以使用Boost.Filesystem,则可以使用directory_iterator而不是调用/bin/ls.