9

这行得通吗?

QString bozo;
QFile filevar("sometextfile.txt");

QTextStream in(&filevar);

while(!in.atEnd()) {
QString line = in.readLine();    
bozo = bozo +  line;  

}

filevar.close();

bozo 会是 sometextfile.txt 的全部吗?

4

2 回答 2

19

为什么还要逐行阅读?您可以对其进行更多优化,并在向其添加行时减少不必要的字符串重新分配:

QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return;
QTextStream in(&file);
QString text;    
text = in.readAll();
file.close();
于 2013-04-05T00:46:30.563 回答
3

正如 ddriver 提到的,您应该首先使用file.open(…);Other than that, yesbozo将包含使用您拥有的代码的整个文件。

在 ddriver 的代码中需要注意的一件事是这text.reserve(file.size());是不必要的,因为在以下行中:

text = in.readAll();

这将替换text为一个新字符串,因此对的调用text.reserve(file.size());将完成未使用的工作。

于 2013-04-05T01:21:54.060 回答