Qt | QProcess | Написать строку в консольное приложение

Я использую 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

Решение

это ответ на ваш вопрос, я считаю.

-2

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

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

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