我在使用 Qt 读取文本文件时遇到了麻烦。我的文本文件如下所示:
17,9001500000000 31,1151700000000 450 0 NaN NaN NaN NaN NaN NaN
1 1 1390309311,00000 0,999847695156391 0,999847695156391 0,999847695156391 0,999847695156391 0,999847695156391 0,999847695156391 0,999847695156391
1 2 1390309311,00000 0,999695413509548 0,999695413509548 0,999695413509548 0,999695413509548 0,999695413509548 0,999695413509548 0,999695413509548
等等..
数据由空格分隔
第一行:第一行的第一列写有我通常需要的以下行的信息。并非第一行中的每一列都被使用。在一些信息之后,这些列填充了“NaN”。
下一行:这里放置了我的数据。我想逐行阅读所有内容。前 3 列再次是该行的一般信息,以下(比如说 300 列)填充了 3 种不同类型的数据(每种类型的 100 次测量的大小)。
所以我读了我的文件:首先,如果我读到第一行,我想收到整个文件的一般信息。(info1, info2, info3, info4) 然后我阅读以下行,用空格分隔。
if (!File.open(QIODevice::ReadOnly | QIODevice::Text))
return false;
QTextStream in(&metFile);
QString line;
int linecount = 0;
double info1,info2,info3,info4;
double lineinfo1,lineinfo2,lineinfo3;
while (!in.atEnd()) {
if (linecount==0) {
in >> info1 >> info2 >> info3 >> info4;
linecount++;
}
else {
line = in.readLine();
QStringList lineparts = line.split(QRegExp("\\s+"));
lineinfo1=lineparts[0].toFloat;
lineinfo2=lineparts[1].toFloat;
lineinfo3=lineparts[2].toFloat;
for (int count=1; count<=100;count++) {
float data1=lineparts[count+2].toFloat();
float data2=lineparts[100+count+2].toFloat();
float data3=lineparts[2*100+count+2].toFloat();
}
linecount++;
}
}
现在,info1-4 被正确读取。但在那之后 lineinfo1-3 和 data1-3 (lineparts[0] 等) 被 nan 或 0 填充?!
有人能帮我吗?
谢谢!