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,但我不明白为什么它会返回...
ifstream allfiles("~/Documents/filenames.txt");不会做你认为它做的事情.波形符号~不是文件名的一部分 - 它是由某些shell解释的特殊字符.您需要整个路径,其中没有~或包含$字符.
尝试设置location到"/tmp/filenames.txt",或只"filenames.txt".
此外,如果您可以使用Boost.Filesystem,则可以使用directory_iterator而不是调用/bin/ls.
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |