我坚持使用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
Run Code Online (Sandbox Code Playgroud)
不要问这些名字的来源.我需要能够索引此文件并将其添加到表中.截至目前,该表如下所示:
|--------------------------------|
| |First Name|Last Name |
|--------------------------------|
|1001 | | |
|--------------------------------|
| | | |
|--------------------------------|
| | | |
|--------------------------------|
| | | |
|--------------------------------|
Run Code Online (Sandbox Code Playgroud)
但它需要看起来像这样
|--------------------------------|
| |First Name|Last Name |
|--------------------------------|
|1001 |James |Bark |
|--------------------------------|
|1002 |Jeremy |Parker |
|--------------------------------|
|1003 |Seinfeld |FonStein |
|--------------------------------|
|1004 |Rabbun |Hassan |
|--------------------------------|
Run Code Online (Sandbox Code Playgroud)
表格部分和放入项目不是问题.问题在于读取格式类似于顶部示例的文本文件.另外,我不需要像那样格式化它.我可以有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();
}
Run Code Online (Sandbox Code Playgroud)
我从某个教程得到的这段代码.一切正常,我已经检查过我是否可以访问该文件,一切都很好.但是如何处理它...我有一个等于所有文本的字符串.那不是很有用.所以我尝试了我在c ++中使用的东西,比如mFile.nextInt();那个函数不存在!
如何在Qt中搜索特定内容的文本文件?
小智 5
如果名称可以包含空格,那么该文件格式会给您带来很多麻烦,因为您无法知道名字或最后一个名字是否包含两个部分.考虑使用其他一些字符作为分隔符,例如:
1001;James;Bark
1002;Jeremy;Parker
1003;Seinfeld;Parker
Run Code Online (Sandbox Code Playgroud)
然后一次读取一行(参见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());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3067 次 |
| 最近记录: |