要在C++中捕获cmd命令的输出并解析,你可以使用popen()
函数
#include<iostream>
#include<string>
#include <cstdio>
int main() {
// 创建一个包含命令的字符串
std::string command = "dir"; // 这里可以替换为任意你想执行的命令
// 使用popen()执行命令并获取输出
FILE* pipe = popen(command.c_str(), "r");
if (!pipe) {
std::cerr << "Failed to execute command."<< std::endl;
return 1;
}
// 读取命令的输出
char buffer[128];
std::string result;
while (fgets(buffer, sizeof(buffer), pipe)) {
result += buffer;
}
// 关闭管道
pclose(pipe);
// 输出结果
std::cout << "Command output: "<< std::endl<< result<< std::endl;
// 解析输出(这里只是简单地将输出分割成行)
std::istringstream iss(result);
std::string line;
while (std::getline(iss, line)) {
std::cout << "Parsed line: "<< line<< std::endl;
}
return 0;
}
这个示例程序会执行dir
命令(Windows系统下的列出目录内容命令),然后读取并输出命令的输出。接着,它会解析输出,将其分割成多行并打印出来。你可以根据需要修改命令和解析过程。
注意:popen()
函数在某些平台上可能存在安全风险,因此在生产环境中使用时请谨慎。