读书人

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

发布时间: 2012-03-31 13:13:26 作者: rapoo

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";

读书人网 >QT开发

热点推荐