我正在尝试将 SWI-prolog 与 QProcess 结合起来。所以我已经可以与 prolog 交互并向它发送问题,但我总是只得到第一个答案。因此,我尝试发送诸如“n”或“r”之类的字符,这应该像在 shell 中一样给我查询的下一个答案。但是,它不适用于 QProcess。这是我的代码:
connect(&p,SIGNAL(readyReadStandardError()),this,SLOT(readStdError()));
connect(&p,SIGNAL(readyReadStandardOutput()),this,SLOT(readStdOut()));
p.setProcessChannelMode(QProcess::MergedChannels);
p.start("swipl",QIODevice::ReadWrite | QIODevice::Unbuffered);
if(!p.waitForStarted())
return;
p.write("consult(ws).\r\n"); //prolog program
if(!p.waitForBytesWritten())
{
p.close();
return;
}
p.write("test(X,Y).\r\n"); //query
if(!p.waitForBytesWritten())
{
p.close();
return;
}
p.write("n",1); //give me the next solution -> nothing happens
我不知道该怎么办了。我怎样才能得到下一个答案,或者我怎样才能告诉 prolog 向我展示所有答案?