【问题标题】:Qt C++ QDataStream read the number 13Qt C++ QDataStream 读取数字 13
【发布时间】:2013-04-08 23:08:27
【问题描述】:

我想用 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();
}

【问题讨论】:

    标签: c++ qt data-stream


    【解决方案1】:

    您以文本模式打开文件并写入二进制值。代码为 13 (0xD) 的字符是换行符。通过删除 QIODevice::Text 以二进制模式打开文件,它应该开始工作了。

    【讨论】:

    • 了解有关文本/二进制模式的更多信息,它总是会带来很多问题:)
    猜你喜欢
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2020-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多