我有一个简单的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;
是否可以在不在每个变量之间添加换行符的情况下实现相同的结果?可以以某种方式捕获变量吗?
答案 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);