Home Articles

Qt | QProcess |将行写入控制台应用程序

Asked
Viewed 263 times
1

我正在使用QProcess与控制台应用程序通信:我正在写一些单词和读取输出 . 但我想通过QProcess写行 . 例如,我有下一个控制台应用程序:

#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
#include <algorithm>

using namespace std;

int main(int argc, char* argv[])
{
    string action;
    do
    {
        cout << "(test)";
        cin >> action;
        cout << action;
        if(action.length() > 10)
        {
            cout << "\t very long string";
        }
        cout << endl;
    }
    while(action != "exit");
    return 0;
}

所以,我不能通过QProcess :: exec或QProcess :: start传递参数,因为它将参数传递给char * argv [] . 我应该在启动QProcess后传递它 . 我已经尝试过使用QProcess :: write,但是有问题:如果我使用的话

process.write("oneWord\n");

我会成功的 . 但如果我使用

process.write("several words\n");

我的程序将单独写下所有这个单词,它看起来像

process.write("several\n");
process.write("words\n");

控制台应用程序无法将其识别为一个字符串 . 我试过用不同的方法:用双括号写线,

process.write("\"several words"\\n");

process.write("\"several words\n""\);

使用受保护的方法 QIODEvice::setOpenMode 并设置 QIODevice::Text 标志,使用 QDataStream ,使用特殊符号如 \r\n\t 和不同的组合 . 另外,我试图使用多个 QProcess::write

process.write("several");
process.write("words\n");

我知道,QProcess继承了QIODevice,并且有机会像文件(输入和输出)一样处理它 . 但是如果单词将在文件中单独写入文件并不重要 . 就我而言,它确实很重要 .

谁能帮我?

1 Answer

  • -2

    This答案解决了你的问题,我相信 .

Related