как перенаправить консольный вывод прологовской трассировки или записи (...) в переменную c ++ - PullRequest
0 голосов
/ 01 июня 2019

Я надеюсь, что кто-то может мне помочь, и большое спасибо всем, у кого есть идея :)

этот вопрос относится к другому для того же проекта, но тематически немного отличается, поэтому отделил его.

Проект вкратце:

Пролог - это решение существующей двумерной головоломки, для которой я написал логику. Visual Studio (VS) Cli Визуализировать головоломки / частей. И наконец, интерфейс должен быть использован для отображения процесса решения (через пролог трассировки или «write ()») шаг за шагом в VS

Цель : Получите выходные данные из кода Prolog, включая выходные данные «write ()» и / или tracerout после вызова метода «PL_call_predicate (...)» в c ++ через интерфейс SWI-Prolog, и сохраните его, например, в. строка переменная в C ++.

Что я пробовал:

Я создаю программу, которая должна визуализировать «процесс решения» головоломки. Решение сделано в прологе. Для визуализации я интегрирую пролог в Visual Studio. Теперь я пытаюсь получить не только Результат от Пролога (это работает благодаря Яну Вилемейкеру), но и вывод трассировки каждого шага. Я попытался перенаправить консольные выходы для cout и Console::WriteLine и несколько других связанных вещей, и я получаю вывод, отображаемый в окне консоли

НО ПРОБЛЕМА : я не получаю вывод от пролога, отображаемого в том же окне консоли: O ...

Я публикую еще один вопрос Вы можете прочитать для дополнительной информации. Это было связано с извлечением Результата PL_call_predicate(); возвращение двух списков с идентификатором головоломки и поворотом состояния Ян Вилемейкер предлагает изменить SWI-Stream.h для перенаправления ввода-вывода, но я не знаю, с чего начать ...

Окончательно

Я хочу собрать вывод трассировки пролога в переменную c ++. Это я могу позже (или лучше во время выполнения) интерпретировать и отображать процесс решения шаг за шагом в Visual Studio, где я отображаю 2D-головоломку. В настоящее время я могу извлечь результат Prolog и все выходные данные консоли НО , а не вывод trac из "PL_call_predicate ()". У кого-нибудь есть идеи, как это сделать ??

Я прошу прощения за орфографические ошибки. Это не мой естественный язык.

...