- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
用Qt的QXmlStreamReader读取Xml数据时:
readNext() 应该放在 while(!reader.atEnd()) 循环的开头还是结尾?我遇到过很多把它放在开头的例子,但也有很多把它放在最后。
QXmlStreamReader reader;
while(!reader.atEnd())
{
// <- Put reader.readNext() here?
QXmlStreamAttributes currentAttributes = reader.attributes();
// Do something with the attributes
// ...
// <- Or put reader.readNext() here?
}
我的直觉说它应该在循环的开始(呃...读取下一个 xml 标记,用新数据填充 attributes() 等)但我不是 100% 确定(由于相当一些将 readNext() 放在循环末尾的示例)。把它放在最后可能还会给我一个差一错误(最后一个 readNext() 的 atEnd() 变为真,最后一个标记未处理),对吗?
最佳答案
您需要了解类的工作原理以及每个函数的作用。作为演示,让我们考虑以下简单示例:
QXmlStreamReader reader("<info name=\"Foo\"/>");
while (!reader.atEnd()) {
//reader.readNext();
auto currentToken = reader.tokenType();
qDebug() << currentToken;
reader.readNext();
}
如果我们运行它并在每次迭代中打印出当前标记 (XML) 的值,我们将获得以下序列:
readNext()
调用在开头),readNext()
调用结束)如您所见,如果 readNext()
位于循环的开头,您可以处理更多元素,包括文档的开始和结束元素。因此,在此类循环中尽早调用 QXmlStreamReader::readNext()
会更好。
关于c++ - QXmlStreamReader : Put readNext() at the start or at the end of the loop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48625016/
我试图从一个 csv 文件中读取,但由于它的大小,没有先将它全部加载到内存中。 我找到的用于读取 csv 的库是 opencsv,它工作得很好,但只公开了两个方法: readAll() 和 readN
我将生产者/消费者模式与FileHelpers库一起使用,以使用多个线程从一个文件(可能很大)中导入数据。每个线程都应该导入该文件的一大块,我想使用FileHelperAsyncEngine实例的Li
用Qt的QXmlStreamReader读取Xml数据时: readNext() 应该放在 while(!reader.atEnd()) 循环的开头还是结尾?我遇到过很多把它放在开头的例子,但也有很多
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 个月前。 Improve t
FileReader fr = new FileReader(inp); CSVReader reader = new CSVReader(fr, ',', '"'); // writer File
我是一名优秀的程序员,十分优秀!