如何从QTextStream创建QString?

时间:2013-04-05 00:33:02

标签: qt qstring

这会有用吗?

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

QTextStream in(&filevar);

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

}

filevar.close();

bozo是sometextfile.txt的全部吗?

2 个答案:

答案 0 :(得分:17)

为什么甚至逐行阅读?您可以稍微优化一下,并在向其添加行时减少不必要的字符串重新分配:

QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return;
QTextStream in(&file);
QString text;    
text = in.readAll();
file.close();

答案 1 :(得分:3)

正如ddriver所提到的,你应该首先使用file.open(…);打开文件。除此之外,是bozo将使用您拥有的代码包含整个文件。

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

text = in.readAll();

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