Тема: Частина даних пропадає при використанні cin. [вирішено]
Хочу передати дані з одної програми в іншу через стандартні потоки cin cout.
Написав тестову віконну прогу для передачі і тестову консольку для прийому/опрацювання/віддачі даних.
Але частина даних до консольки десь губиться по дорозі.
Прошу порад де копати.
void MainWindow::on_pushButton_clicked() {
connect (process, SIGNAL(finished(int)), this, SLOT(printOutput()));
connect (process, SIGNAL(finished(int)), this, SLOT(printError()));
QFile *file = new QFile("D:/Yarko/c++/KGV/KGV/main.cpp"); //фізичний розмір 2161 байт
file->open(QIODevice::ReadOnly);
char buf[2500];
file->read(buf, 2500);
qint64 size = file->size(); //2161. значення size коректне
process->start("D:/Yarko/c++/KGV/build-KGVTest/debug/KGVTest.exe");
process->write(buf, size);
process->closeWriteChannel();
}
void MainWindow::printOutput() {
QByteArray byteArray = process->readAllStandardOutput(); //приходить лише 1535 байт
ui->plainTextEdit_2->appendPlainText(QString(byteArray));
}
void MainWindow::printError() {
QByteArray byteArray = process->readAllStandardError(); //приходить стрічка "1535"
ui->plainTextEdit_3->appendPlainText(QString(byteArray));
}
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
char buf[2500];
int i = 0;
char c;
while (cin.good()) {
cin >> c;
if (c == ' ') cerr << 's'; //перевірка чи символ - пропуск
buf[i] = c;
++i;
}
cout.write(buf, i);
cerr << i;
return 0;
}
Як мінімум з потоку не читаються пропуски і \r\n.
p.s. сигнал QProcess::bytesWritten(qint64) показує коректну кількість записаних байт