c++ - 如何使用 Visual Studio 2005 获取两个不同 C++ 程序之间的返回值

标签 c++ c visual-studio

现在,我有两个程序 A 和 B。程序 A 使用 system() 来执行程序 B。

但是,程序B使用写文件的方式返回其执行结果。

程序A有更好的方法来获取程序B的返回值吗?

例如

在程序A中

int main(){
    system("B.exe");
    readFile(finePath);
    //do something
    return 0;
}

在程序B中

int main(){
    char temp[1024];
    //do something
    writeFile(temp);
    return 0;
}

最佳答案

管道是一种相对简单的跨平台方法,无需在各处创建临时文件,也不必处理这样做可能产生的其他问题。

static string pcommand(const string& cmd) 
{
    FILE* stream = _popen(cmd.c_str(), "r");
    string data;
    if (stream) 
    {
        while (!feof(stream))
        {
            const int buffer_size = 256;
            char buffer[buffer_size];
            if (fgets(buffer, buffer_size, stream))
                data.append(buffer);
        }
        _pclose(stream);
    }
    return data;
}

int main()
{
    string 'str' = pcommand("dir");
    // 'str' now contains the results sent to stdout
}

关于c++ - 如何使用 Visual Studio 2005 获取两个不同 C++ 程序之间的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29982991/

相关文章:

c - 将数组打印到文件仅打印第一个元素

sql-server - 报表服务器 2019 不可用

c# - Visual Studio 的 Commonclipse?

c++ - g++ 不链接第三方库

c - scanf 正在跳过扫描

C++ : Finding instances of a class in a vector of superclass

c - 无法将变量类型转换为指针类型(例如,将int转换为int *)。我想这是一件坏事,但是为什么不可能呢?

vb.net - VB中如何实现大于X小于Y?

if (!result) 的 C++ 糖语法返回 false;

java - 面向对象代码,非面向对象语言