当前位置: 代码迷 >> QT开发 >> QT中文件读写操作的有关问题
  详细解决方案

QT中文件读写操作的有关问题

热度:144   发布时间:2016-04-25 05:02:59.0
QT中文件读写操作的问题
C/C++ code
QFile *arc=new QFile("d:\\arc.txt");    arc->open(QIODevice::ReadWrite|QIODevice::Text);    QTextStream in(arc);    QTextStream out(arc);    edge **matrix;    QString number;    int startTime[2];    int arriveTime[2];    int startCity;    int arriveCity;    int price;    int i,j,k=8;    in<<k<<endl;    for(i=0;i<8;i++)        in<<"1111"<<" "<<i<<" "<<i+1<<" "<<i+2<<" "<<i+3<<" "<<1<<" "<<2<<" "<<10<<"\n";cout<<k;        out>>k;//在用in写入后用out读出第一个数据        for(i=0;i<8;i++)        {            out>>number>>startTime[0]>>startTime[1]>>arriveTime[0]>>arriveTime[1]>>startCity>>arriveCity>>price;            cout<<number.toStdString()<<" "<<startTime[0]<<" "<<startTime[1]<<" "<<arriveTime[0]<<" "<<arriveTime[1]<<" "<<startCity<<" "<<arriveCity<<" "<<price<<endl;        }            return 0;

这样写生成的文件内容就没有格式,不是我想象中的一行一行的样子。而如果这样写
C/C++ code
Q_DECL_EXPORT int main(int argc, char *argv[]){    QFile *arc=new QFile("d:\\arc.txt");    arc->open(QIODevice::ReadWrite|QIODevice::Text);    QTextStream in(arc);    QTextStream out(arc);    edge **matrix;    QString number;    int startTime[2];    int arriveTime[2];    int startCity;    int arriveCity;    int price;    int i,j,k=8;    in<<k<<endl;    for(i=0;i<8;i++)        in<<"1111"<<" "<<i<<" "<<i+1<<" "<<i+2<<" "<<i+3<<" "<<1<<" "<<2<<" "<<10<<"\n";    arc->close();       //close一次后再打开    arc->open(QIODevice::ReadOnly);        out>>k;        for(i=0;i<8;i++)        {            out>>number>>startTime[0]>>startTime[1]>>arriveTime[0]>>arriveTime[1]>>startCity>>arriveCity>>price;            cout<<number.toStdString()<<" "<<startTime[0]<<" "<<startTime[1]<<" "<<arriveTime[0]<<" "<<arriveTime[1]<<" "<<startCity<<" "<<arriveCity<<" "<<price<<endl;        }        cout<<k;    return 0;}

就是在写入完后再打开就没没问题,出来的文件也就是一行一行的,不知道为什么。。。
顺便谁能说下这个close到底能干什么,过去我不close程序一样也用的好好的。

------解决方案--------------------
应该不是close的问题吧 out<<"\r\n";
  相关解决方案