运行cmd命令并将结果转换为字符串变量

时间:2014-02-01 13:53:33

标签: c++ cmd

如何运行cmd命令,并将输出转换为字符串变量? 示例:

string result = ExecuteFunction("ipconfig");

现在“结果”包含:

Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix  . :
......

这个shuld正在发生,没有显示任何cmd屏幕,所有来自该程序。 Windows平台当然。

2 个答案:

答案 0 :(得分:1)

您可以构建管道:

在Linux上:

#include <cstdio>
#include <iostream>
#include <vector>

int main() {
    FILE* fp = popen("ifconfig", "r");
    if(fp) {
        std::vector<char> buffer(4096);
        std::size_t n = fread(buffer.data(), 1, buffer.size(), fp);
        if(n && n < buffer.size()) {
            buffer.data()[n] = 0;
            std::cout << buffer.data() << '\n';
        }
        pclose(fp);
    }
}

对于Windows,您可以使用'_popen'并将'ifconfig'更改为'ipconfig'

答案 1 :(得分:0)

自远古以来这个问题的标准解决方案是使用命令行重定向将标准输出发送到文本文件,然后将文件读入字符串。

您没有提供足够的上下文来回复代码。在C / C ++中,您可以使用_popen()。在.NET中这个答案可能有所帮助。 Redirect console output to textbox in separate program