gpt4 book ai didi

qt - 查看 QTextStream

转载 作者:行者123 更新时间:2023-12-03 18:20:23 31 4
gpt4 key购买 nike

我想查看读取 QFile 的 QTextStream 的下一个字符,以创建一个高效的标记器。

但是,我没有找到任何令人满意的解决方案。

QFile f("test.txt");
f.open(QIODevice::WriteOnly);
f.write("Hello world\nHello universe\n");
f.close();

f.open(QIODevice::ReadOnly);
QTextStream s(&f);
int i = 0;
while (!s.atEnd()) {
++i;
qDebug() << "Peek" << i << s.device()->peek(3);
QString v;
s >> v;
qDebug() << "Word" << i << v;
}

给出以下输出:
Peek 1 "Hel" # it works only the first time
Word 1 "Hello"
Peek 2 ""
Word 2 "world"
Peek 3 ""
Word 3 "Hello"
Peek 4 ""
Word 4 "universe"
Peek 5 ""
Word 5 ""

我尝试了几种实现,还有 QTextStream::pos() 和 QTextStream::seek()。它工作得更好,但 pos() 有问题(当文件太大时返回 -1)。

有没有人有解决这个反复出现的问题的方法?先感谢您。

最佳答案

你从QIODevice偷看,但随后您从 QTextStream 中读到,这就是为什么 peek 只工作一次。尝试这个:

while (!s.atEnd()) {
++i;
qDebug() << "Peek" << i << s.device()->peek(3);
QByteArray v = s.device()->readLine ();
qDebug() << "Word" << i << v;
}

不幸的是, QIODevice不支持单字阅读,需要自己动手,结合peak和read。

关于qt - 查看 QTextStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21401954/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com