Как сделать QString из QTextStream?

будет ли это работать?

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 ответов


почему даже читать строку за строкой? Вы можете оптимизировать его немного больше и уменьшить ненужные перераспределения строки при добавлении к ней строк:

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

как упоминает ddriver, вы должны сначала открыть файл с помощью file.open(…); кроме этого, да bozo будет содержать весь файл, используя код, который вы.

одна вещь, которую следует отметить в коде ddriver, это text.reserve(file.size()); не нужно, потому что на следующей строке:

text = in.readAll();

это заменить text С новой строкой, поэтому вызов text.reserve(file.size()); просто сделал бы неиспользованную работу.