I am using QProcess to communicate with console application: i am writing some words and read outputs. But i want to write line via QProcess. For example, i have the next console app:
#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;
}
So, i can't pass parameters via QProcess::exec or QProcess::start, because it pass parameters to char* argv[]. I should pass it after launching QProcess. I've tried use QProcess::write, but there are problem: if i use
process.write("oneWord\n");
i'll get success. But if i use
process.write("several words\n");
my program will write all this word separately and it looks like
process.write("several\n");
process.write("words\n");
Console application doesn't recognize it as one string. I've tried using different ways: write line in double brackets,
process.write("\"several words"\\n");
and
process.write("\"several words\n""\);
use protected methods QIODEvice::setOpenMode and set QIODevice::Text flag, use QDataStream, use special symbols like \r, \n, \t and different combination. Also, i tried to use multiple QProcess::write
process.write("several");
process.write("words\n");
I know, that QProcess inherits QIODevice and there are opportunity to deal with it like a file (input & output). But it doesn't matter if words will be written to file separately in file. In my case, it does matter.
Can anyone help me?
 
    