Qt-读写文件总结

最近用Qt写了一个关于注册码界面,其中涉及了读取文本文件,以及关于字符串和日期的处理,所以我想在这里做一个简单地总结。
首先是关于读取文本文件。Qt中有QFile类,这是一个对文件管理的类。这个类包含了一些读取文本的方法,可以直接调用这些方法来读取文本文件。例如,readLine方法可以直接读取文本文件的一行。具体的代码如下:

       QFile *file=new QFile("./Resources/LoginWord/loginWord.txt"); 
       file->open(QIODevice::ReadOnly|QIODevice::Text)
      qint64 num = file->readLine(SloginWord,sizeof(SloginWord)); 

第一行代码是创建一个QFile的对象,然后调用open打开文件。打开成功返回true,失败返回false。
ReadOnly表示只读,Text表示已‘\n’作为读取一行的结尾标志。最后调用readLine方法读取文本,返回的是读取一行文本的字符数。

除了上面的QFile读取文本文件,我还用到了QTextStream.它可以操作QIODevice、QByteArray和QString。

fileUserDateWord = new QFile("./Resources/LoginWord/UserDateWord.txt");
if(!fileUserDateWord->open(QIODevice::ReadOnly|QIODevice::Text))
{
    QMessageBox::information(this,tr("打开文件失败"),fileUserDateWord->errorString());
}

in = new QTextStream(fileUserDateWord);
QString info = in->readLine();
    QStringList list = info.split("%");
QList<QString>::iterator it = list.begin();

以下是写入文件:

QFile fileUserDateWord("./Resources/LoginWord/UserDateWord.txt");
QString info = userName + "%" + loginWord + "%" + time + "%" + year +"%"+ mouth +"%"+day+"%"+ isUserLogin +"\n";

//设置写入的字符编码,可以写入中文字符

QTextCodec* codec=QTextCodec::codecForName("UTF-8");

QTextStream out(&fileUserDateWord);
out.setCodec(codec);
out<<info;

然后就是关于日期。
Qt关于获取系统日期的类后很多,有QDate,QDateTime等。其中我在程序中使用的是QDateTime,因为这个类不仅可以获得年月日,还可以获取时分秒。

QDateTime localDate = QDateTime::currentDateTime();
QString time = localDate.toString("yyyy%MM%dd%hh%mm%ss");

第一行代码是指获取当前的系统时间。第二行代码是指把时间显示格式设置为yyyy%MM%dd%hh%mm%ss。比如2015%03%04%18%22%23.我用‘%’是为了以后读取的时候,分别获取年月日等日期的方便。
在文本中获取日期后,日期都是以字符串的形式存储的,要想获取例如int类型的日期,就要用到toInt,toLong等方法。当然要想把int类型的日期转化为QString类型的日期,就要用到setNum
这个方法了。

最后就是关于字符的处理。
对于字符的处理QString里有很多的方法。其中我用到了split(“%”)方法,这个方法就是用%来分割字符串,返回的是一个QStringList的对象。

     QStringList list = info.split("%");
    QList<QString>::iterator it = list.begin();

还有一条就是readLine方法读取一行,是包含行的结束字符的‘\n’,要去除这个字符可以调用trimed这个方法。对于QStringList 的遍历可以使用QList::iterator这个对象。

最后如果是要获取电脑计算机名,在Qt中可以使用QHostInfo这个类。
具体的代码为QHostInfo::localHostName();

发布了98 篇原创文章 · 获赞 337 · 访问量 48万+

猜你喜欢

转载自blog.csdn.net/yiyele/article/details/78310818