c ++ — захватывать выходные аргументы отдельно от PHP exec ()

У меня есть простая программа на C ++, которую я хочу выполнить с PHP через функцию exec (), и я хочу захватить выходные переменные как отдельные, чтобы я мог выполнять дальнейшие вычисления в 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;

Можно ли достичь того же результата без добавления символа новой строки между каждой переменной? Могут ли переменные быть каким-то образом зафиксированы как есть?

2

Решение

Каким-то образом вам нужно разделить выходные данные, если вы не хотите использовать новую строку, одним из способов является определение разделителя. Вам необходимо убедиться, что вы больше не используете свой разделитель.

Например, если разделитель: «#! #! #»

Изменить следующий код в C ++

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

Для того, чтобы:

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

и получить выводы в php:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]