我需要将bash命令的输出逐行读取到字符串 vector 中。我使用ifstream尝试了此代码,但它给出了错误。我必须使用什么解析它们而不是ifstream?
using namespace std;
int main()
{
vector<string> text_file;
string cmd = "ls";
FILE* stream=popen(cmd.c_str(), "r");
ifstream ifs( stream );
string temp;
while(getline(ifs, temp))
text_file.push_back(temp);
for (int i=0; i<text_file.size(); i++)
cout<<text_file[i]<<endl;
}
最佳答案
您不能将C I/O与C++ iostream设施一起使用。如果您确实要使用popen
,则需要使用read访问其结果。
如果ls
确实是您想要的,请给
Boost.Filesystem
尝试一下。
#include <boost/filesystem.hpp>
#include <vector>
int main()
{
namespace bfs = boost::filesystem;
bfs::directory_iterator it{bfs::path{"/tmp"}};
for(bfs::directory_iterator it{bfs::path{"/tmp"}}; it != bfs::directory_iterator{}; ++it) {
std::cout << *it << std::endl;
}
return 0;
}
关于c++ - 将命令行的输出逐行读取到c++中的字符串 vector 中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12005481/