Qt C ++ QDataStream читать номер 13

Я хочу написать двоичный файл с QDataStream.
Проблема с кодом ниже, когда я пишу my_string = «13», я читаю 0; когда my_string не равно «13» («12», «14», «20», …), я читаю реальное значение (12, 14, 20, …).
Кто-нибудь знает, почему у меня такая проблема только с номером 13.

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

//open the file to write
QFile file1("test");
if (!file1.open(QIODevice::WriteOnly | QIODevice::Text))
return;
QDataStream stream1(&file1);
QString my_string = "13";

qint8 val8 = my_string.toInt();
stream1 << val8;

file1.close();//open the file to read
QFile file2("test");
file2.open(QIODevice::ReadOnly | QIODevice::Text);

QDataStream stream2(&file2);

qint8 val2;
stream2>> val2;

QListWidgetItem *item = new QListWidgetItem;
item->setText(QString::number(val2));
ui->listWidget->addItem(item);

file2.close();
}

0

Решение

Вы открыли файл в текстовом режиме и записали двоичное значение. Символ с кодом 13 (0xD) является новой строкой. Откройте файл в двоичном режиме, удалив QIODevice :: Text, он должен начать работать.

1

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

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

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