#include <QCoreApplication>
#include<iostream>
#include<QFile>
#include<QVector>
#include<QString>
#include<QTextStream>
using namespace std;
class Nread_head
{
public:
QString PINEX_VERSION;
};
class Nread_data
{
public:
int PRN;
double year;
double month;
double day;
double hour;
double minute;
double second;
double A0;
double A1; //衛星鐘的漂移
double A2; //衛星的漂移速度
//廣播軌道-1
double IODE;
double Crs;
double n;
double M0;
//廣播軌道-2
double Cuc;
double e;
double Cus;
double sqrt_A;
//廣播軌道-3
double TOE;
double Cic;
double OMEGA;
double Cis;
//廣播軌道-4
double i0;
double Crc;
double omegad;
double OMEGA_DOT;
//廣播軌道-5
double i;
double L2;
double GPS;
double L2P;
//廣播軌道-6
double jingdu;
double health;
double TGD;
double IODC;
//廣播軌道-7
double sendtime; //電文發送時刻
double h; //擬合區間
};
class Nfile_vector
{
public:
QVector < QVector<Nread_data> > nfile_ve;
Nfile_vector()
{
this->nfile_ve.resize(33);//調整容器大小為33
}
};
class Nfile_record
{
public:
Nfile_vector Nfile_vector1;
void put_txt_toDate();
//void put_txt_toHead();
};
/*void Nfile_record::put_txt_toHead()
{
Nread_head head1;
QFile file("E:\\bbdy3000.11n");
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
cout<<"Fail to open the file"<<endl;
}
QTextStream read_fromN(&file);
int i=1;
do
{
QString str=read_fromN.readLine();
if(str.indexOf("RINEX VERSION")>0)
{
i=1;
}
} while(i==0);
}*/
void Nfile_record::put_txt_toDate()
{
QFile file("E:\\bbdy3000.11n");
if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
cout<<"Fail to open the file"<<endl;
return;
}
QTextStream read_fromN(&file);
QString str;
Nread_data date1;
int i=0;
do
{
QString str=read_fromN.readLine();
if(str.indexOf("END OF HEADER")>0)
{
i=1;
}
} while(i==0);
while((str = read_fromN.readLine())!="")
{
//讀取PRN/歷元/星力鐘
date1.PRN =str.mid(0,2).toInt();
date1.year =str.mid(3,2).toInt();
date1.month =str.mid(6,2).toInt();
date1.day =str.mid(9,2).toInt();
date1.hour =str.mid(12,2).toInt();
date1.minute =str.mid(15.2).toInt();
date1.second =str.mid(17,5).toDouble();
date1.A0 =(str.mid(22,15)+"e"+str.mid(38,3)).toDouble();
date1.A1 =(str.mid(41,15)+"e"+str.mid(57,3)).toDouble();
date1.A2 =(str.mid(60,15)+"e"+str.mid(76,3)).toDouble();
//讀軌道一
str=read_fromN.readLine();
date1.IODE =(str.mid(3,15)+"e"+str.mid(19,3)).toDouble();
date1.Crs =(str.mid(22,15)+"e"+str.mid(38,3)).toDouble();
date1.n =(str.mid(41,15)+"e"+str.mid(57,3)).toDouble();
date1.M0 =(str.mid(60,15)+"e"+str.mid(76,3)).toDouble();
//讀軌道二
str=read_fromN.readLine();
date1.Cuc =(str.mid(3,15)+"e"+str.mid(19,3)).toDouble();
date1.e =(str.mid(22,15)+"e"+str.mid(38,3)).toDouble();
date1.Cus =(str.mid(41,15)+"e"+str.mid(57,3)).toDouble();
date1.sqrt_A =(str.mid(60,15)+"e"+str.mid(76,3)).toDouble();
//讀軌道三
str=read_fromN.readLine();
date1.TOE =(str.mid(3,15)+"e"+str.mid(19,3)).toDouble();
date1.Cic =(str.mid(22,15)+"e"+str.mid(39,3)).toDouble();
date1.OMEGA =(str.mid(41,15)+"e"+str.mid(57,3)).toDouble();
date1.Cis =(str.mid(60,15)+"e"+str.mid(76,3)).toDouble();
//讀軌道四
str=read_fromN.readLine();
date1.i0 =(str.mid(3,15)+"e"+str.mid(19,3)).toDouble();
date1.Cic =(str.mid(22,15)+"e"+str.mid(38,3)).toDouble();
date1.omegad =(str.mid(41,15)+"e"+str.mid(57,3)).toDouble();
date1.OMEGA_DOT=(str.mid(60,15)+"e"+str.mid(76,3)).toDouble();
//讀軌道五
str=read_fromN.readLine();
date1.i =(str.mid(3,15)+"e"+str.mid(19,3)).toDouble();
date1.L2 =(str.mid(22,15)+"e"+str.mid(38,3)).toDouble();
date1.GPS =(str.mid(41,15)+"e"+str.mid(57,3)).toDouble();
date1.L2P =(str.mid(60,15)+"e"+str.mid(76,3)).toDouble();
//讀軌道六
str=read_fromN.readLine();
date1.jingdu =(str.mid(3,15)+"e"+str.mid(19,3)).toDouble();
date1.health=(str.mid(22,15)+"e"+str.mid(38,3)).toDouble();
date1.TGD =(str.mid(41,15)+"e"+str.mid(57,3)).toDouble();
date1.IODC =(str.mid(60,15)+"e"+str.mid(76,3)).toDouble();
//讀軌道七
str=read_fromN.readLine();
date1.sendtime=(str.mid(3,15)+"e"+str.mid(19,3)).toDouble();
date1.h =(str.mid(22,15)+"e"+str.mid(38,3)).toDouble();
this->Nfile_vector1.nfile_ve[date1.PRN].push_back(date1);
}
file.close();
}
int main()
{
Nfile_record a;
a.put_txt_toDate();
return 0;
}
下面就是要讀的檔案
我用上面的代碼讀下來,發現結果是錯的,可是我找不到原因

uj5u.com熱心網友回復:
先檢查一下讀進來的字串是否正確,后面的toInt和toDouble應該是不會錯的uj5u.com熱心網友回復:
謝謝,其實沒有錯誤,別人說這個錯了,我就以為錯了
uj5u.com熱心網友回復:
請問這行代碼,QFile file("E:\\bbdy3000.11n");后面的檔案名字的格式的注意點是什么,為什么我打不開檔案,轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/58095.html
標籤:數據庫及相關技術
上一篇:MySQL 案例:analyze,慢查詢,與查詢無回應
下一篇:cbuilder
