我有一個文本文件。我需要將它讀到一個QStringList。沒有線路分離器。我的意思是文本文件中的每一行都在一個新行中。那麼無論如何,我可以做到這一點?讀取一個文本文件到QStringList
4
A
回答
15
我假設每一行都應該是列表中的一個單獨的字符串。在一個循環中使用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);
}
2
如果文件不是太大,閱讀全部內容爲QString
,然後split()
它變成一個QStringList
。
我喜歡使用QRegExp版本,以處理來自不同平臺的換行:
QStringList sList = s.split(QRegExp("(\\r\\n)|(\\n\\r)|\\r|\\n"), QString::SkipEmptyParts);
2
QFile TextFile;
//Open file for reading
QStringList SL;
while(!TextFile.atEnd())
SL.append(TextFile.readLine());
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是回車
List= ReadAll.split(QRegExp("[\r\n]"),QString::SkipEmptyParts);
1
我喜歡我的代碼完全縮進/ paranthesized與明顯的變量名稱(它們可能需要更長的時間來鍵入,但更容易調試),所以會做以下事情(但更改「myTextFile」和「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();
}
相關問題
- 1. 一個函數讀取文本文件
- 2. 從文本文件讀取和寫入到另一個文本文件
- 3. 讀一個文本文件
- 4. 讀取多個文本文件,並寫入到一個文件中的一列
- 5. 一次讀取文本文件一行
- 6. 讀取格式化文本文件到一個數組
- 7. 從文本文件中讀取到一個數組
- 8. 讀取文本文件到一個結構數組
- 9. 插入新行到一個文本文件中讀取
- 10. 讀取一個xml文件並映射到文本框
- 11. 在同一個腳本中讀取幾個文本文件
- 12. 從多個文件讀取/寫入文本到主文件
- 13. 從文本文件中讀取,創建另一個文件
- 14. 如何讀取文本文件到Datagridview
- 15. 讀取文本文件到數組
- 16. 將文本文件讀取到jtable
- 17. python讀取文本文件到數組
- 18. 讀取文本的下一行文件
- 19. 從文本文件中讀取一列
- 20. java從一個文件中讀取某個文件到另一個文件
- 21. 讀取一個csv文件到陣列
- 22. 讀取文件到一個數組
- 23. C:讀取文件到一個數組
- 24. 讀取一個SQL文件
- 25. 讀取一個FPT文件
- 26. 讀取一個txt文件
- 27. 讀取一個csv文件
- 28. 讀取一個XML文件
- 29. 讀取多個文本文件java
- 30. 試圖讀取整個文本文件