我試圖在Windows上使用以下代碼捕獲系統命令,以便將輸出作爲字符串返回。從FILE結構解析爲C++中的字符串
std::string exec(char* cmd) {
FILE* pipe = _popen(cmd, "r");
if (!pipe) return "ERROR";
std::ifstream ifs(pipe);
std::string content((std::istreambuf_iterator<char>(ifs)),
(std::istreambuf_iterator<char>() ));
printf("%s", content);
return content;
}
當我調用該函數是這樣的:
char *command = "set";
std::string results = exec(command);
printf("%s", results);
getchar();
輸出是短短隨機字節。
╝÷:ö°:
我試圖讓所有的結果附加在1個長字符串中。誰能告訴我我做錯了什麼? 我嘗試重定向stderr輸出與命令,但它也給一些隨機字節。
會,即使編譯?在帶有'FILE'指針的標準庫中沒有['std :: ifstream'構造函數](http://en.cppreference.com/w/cpp/io/basic_ifstream/basic_ifstream)。 –