2012-04-05 159 views
0

我被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(){ 
    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();那么这个函数不存在!!!

如何通过文本文件搜索Qt中的特定内容?

回答

5

如果名称中可以包含空格,那么这种文件格式会带来很多麻烦,因为您无法知道名字或最后是否包含两个部分。考虑使用一些其他的字符作为分隔符,例如:

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

然后读取线一次一个(见QTextStream的文档)和分裂的QString到QStringList中:

+0

这真的帮助,它正是我所需要的。非常感谢你^ _ ^ – Gabe 2012-04-06 17:49:34