我有一个文本文件。我需要将它读取到QStringList。没有行分隔符。我的意思是文本文件中的每一行都在一个新行中。那么无论如何我能做到这一点吗?
答案 0 :(得分:16)
我假设每行应该是列表中的单独字符串。在一个循环中使用QTextStream::readLine(),并在每个步骤中将返回的值附加到QStringList。像这样:
QStringList stringList;
QFile textFile;
//... (open the file for reading, etc.)
QTextStream textStream(&textFile);
while (true)
{
QString line = textStream.readLine();
if (line.isNull())
break;
else
stringList.append(line);
}
答案 1 :(得分:4)
QFile TextFile;
//Open file for reading
QStringList SL;
while(!TextFile.atEnd())
SL.append(TextFile.readLine());
答案 2 :(得分:3)
如果文件不是太大,请将整个内容读入QString
,然后split()
将其读入QStringList
。
我喜欢使用QRegExp版本来处理来自不同平台的换行:
QStringList sList = s.split(QRegExp("(\\r\\n)|(\\n\\r)|\\r|\\n"), QString::SkipEmptyParts);
答案 3 :(得分:1)
我喜欢我的代码完全缩进/ paranthesized与明显的变量名称(他们可能需要更长的时间来键入,但更容易调试)所以将执行以下操作(但更改" myTextFile"和&# 34; myStringList"更合理的名称,例如" employeeListTextFile")
QFile myTextFile;
QStringList myStringList;
if (!myTextFile.open(QIODevice::ReadOnly))
{
QMessageBox::information(0, "Error opening file", myTextFile.errorString());
}
else
{
while(!myTextFile.atEnd())
{
myStringList.append(myTextFile.readLine());
}
myTextFile.close();
}
答案 4 :(得分:0)
以下代码读取文件
QFile File("/file_path");
if(!File.open(QIODevice::ReadOnly));
{
qDebug("Error");
}
QTextStream in(&File);
while(!in.atEnd())
{
qDebug()<<ReadAll;
ReadAll=in.readAll();
}
File.close();
现在该文件已关闭,现在拆分新行,即\ n此处\ r \ n是回车
List= ReadAll.split(QRegExp("[\r\n]"),QString::SkipEmptyParts);