簡體   English   中英

使用 Qt 讀取、寫入和搜索文本文件

[英]Reading, writing and searching through text files with Qt

我被 Qt(再次)困住了,我正在嘗試從文本文件中讀取文本。 這是文本文件包含的內容:

1001 James Bark
1002 Jeremy Parker
1003 Seinfeld Parker
1004 Sigfried FonStein
1005 Rabbun Hassan
1006 Jenniffer Jones
1007 Agent Smith
1008 Mister Anderson

不要問名字從何而來。 我需要能夠索引這個文件並將其添加到表中。 截至目前,該表如下所示:

|--------------------------------|
|          |First Name|Last Name | 
|--------------------------------|
|1001      |          |          |  
|--------------------------------| 
|          |          |          |
|--------------------------------|      
|          |          |          |
|--------------------------------|      
|          |          |          |      
|--------------------------------|

但它需要看起來像這樣

    |--------------------------------|
    |          |First Name|Last Name | 
    |--------------------------------|
    |1001      |James     |Bark      |  
    |--------------------------------| 
    |1002      |Jeremy    |Parker    |
    |--------------------------------|      
    |1003      |Seinfeld  |FonStein  |
    |--------------------------------|      
    |1004      |Rabbun    |Hassan    |      
    |--------------------------------|

桌子部分和放入物品不是問題。 問題在於讀取格式類似於頂部示例的文本文件。 另外,我不需要像那樣格式化它。 我可以有 3 個不同的文本文件,這些文件中的 ID、Fname 和 Lname 是分開的。 這會很麻煩,但如果我必須這樣做,我會的。

所以我的問題是我到底如何索引這個文件並獲取這些值?

這是一個 function:

Function(){
    QString fileName = "C:\\Users\\Gabe\\SeniorProj\\Students.txt";
    QFile mFile(fileName);

    if(!mFile.open(QFile::ReadOnly | QFile::Text)){
        qDebug() << "Could not open file for reading";
        return;
    }

    QTextStream in(&mFile);
    QString mText = in.readAll();

    mFile.flush();
    mFile.close();
    }

這段代碼是我從某處的教程中獲得的。 一切正常,我檢查了我是否可以訪問該文件,一切都很好。 但是如何處理它……我有一個等於所有文本的字符串。 那不是很有用。 所以我嘗試了我在 c++ 中使用的東西,比如mFile.nextInt(); 那么 function 不存在!!!

如何在文本文件中搜索 Qt 中的特定內容?

如果名稱可以包含空格,該文件格式會給您帶來很多麻煩,因為您無法知道名字或姓氏是否包含兩個部分。 考慮使用其他字符作為分隔符,例如:

1001;James;Bark
1002;Jeremy;Parker
1003;Seinfeld;Parker

然后一次讀取一行(參見 QTextStream 的文檔)並將 QString 拆分為 QStringList:

QTextStream stream(stdin);
QString line;    
do {
    line = stream.readLine();
    QStringList parts = line.split(";", QString::KeepEmptyParts);
    if (parts.length() == 3) {
        QString id        = parts[0];
        QString firstName = parts[1];
        QString lastName  = parts[2];
    }        
} while (!line.isNull());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM