捕获输出参数与PHP exec()分开

时间:2015-09-22 19:35:14

标签: php c++ g++

我有一个简单的C ++程序,我想通过函数exec()用PHP执行,我想将输出变量单独捕获,所以我可以在PHP中执行进一步的计算。我正在使用g ++(GCC)4.8.1来编译程序。

C ++代码:

#include<iostream>
#include<string>
using namespace std;

int main() {
    string test = "This is a test string";
    int n1=3, n2=4, n3=5;
    cout<<test<<n1<<n2<<n3;
    return 0;
}

PHP代码:

<?php
    $dir = getcwd();
    $command = "g++ ".$dir."\\files\\index.cpp -o ".$dir."\\files\\output.out";
    exec($command, $asdf);
    exec($dir."\\files\\output.out", $test);

    print_r($test);
?>

我得到的输出是:

Array ( [0] => This is a test string345 ) 

我想要的输出是:

Array ( [0] => This is a test string [1] => 3 [2] => 4 [3] => 5 ) 

可以通过更改C ++代码中的下一行来实现:

cout<<test<<endl<<n1<<endl<<n2<<endl<<n3;

是否可以在不在每个变量之间添加换行符的情况下实现相同的结果?可以以某种方式捕获变量吗?

1 个答案:

答案 0 :(得分:1)

不知何故,你需要分开输出,如果你不想使用新的一行是定义一个分隔符。您需要确保在其他任何地方都没有使用分隔符。

例如,如果分隔符是:&#34;#!#!#&#34;

在c ++中更改以下代码

cout<<test<<n1<<n2<<n3;

要:

String sep = "#!#!#";
cout<<test<<sep<<n1<<sep<<n2<<sep<<n3;

并在php中获取输出:

print_r( explode ("#!#!#", $test);