求一段qt下 从.txt文档中导入数据到二维数组的程序

零静 2013-07-09 09:18:20
我的train_data.txt中的数据如下所示:
1.33 0.99875 0 0 0 0 0
3.5 0.99342 0 1 0 0 0
9.1 0.99342 0 0 1 0 0
1.39 0.99650 0.537 0 0 1 0
1.43 0.9623 3.1 0 0 0 1
我想把这些数据的前三列导入浮点型二维数组A中,后四列导入整形数组B中。我刚刚学习qt,但是课题用到这个功能,我不熟悉,希望高手帮帮忙。
...全文
612 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
零静 2013-07-10
  • 打赏
  • 举报
回复
终于搞出来了,对于大神们来说这个程序变得有点难看了。 #include <QtCore/QCoreApplication> #include <QTextCodec> #include <QStringList> #include <QDebug> #include<iostream> #include<QDataStream> #include<QFile> #include<QString> #include<QList> #include<QListIterator> float A[5][3]; int B[5][4]; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); QList<QString>list; QList<QString>list_1; QFile file1("train_data.txt"); if(!file1.open(QIODevice::ReadOnly|QIODevice::Text)) qDebug() << file1.errorString(); QTextStream in(&file1); while(!in.atEnd()) { QString line = in.readLine(); qDebug()<<line; list<<line;// 讲文档中的每行转换为字符串数组,存入字符串型容器类list中!! } list_1<<list[0].split(" ",QString::SkipEmptyParts);//将字符串“123 456 789”转换到容器类list1="123" "456" "789" list_1<<list[1].split(" ",QString::SkipEmptyParts); list_1<< list[2].split(" ",QString::SkipEmptyParts); list_1<<list[3].split(" ",QString::SkipEmptyParts); list_1<<list[4].split(" ",QString::SkipEmptyParts); QList<float>list_2; for(int i=0;i<list_1.size();i++) { list_2<<list_1[i].toFloat(); } qDebug()<<"list_2[6]:"; qDebug()<<list_2[6]; for(int i=0;i<5;i++) { for(int j=0;j<7;j++) { if(j<3) A[i][j]=list_2[i*7+j]; else { B[i][j-3]=list_2[i*7+j]; } } } qDebug()<<"A:"<<endl; for(int i=0;i<5;i++) { for(int j=0;j<3;j++) { qDebug()<<A[i][j]; if(j==2) qDebug()<<endl; } } qDebug()<<"B:"<<endl; for(int i=0;i<5;i++) { for(int j=0;j<4;j++) { qDebug()<<B[i][j]; if(j==4) qDebug()<<endl; } } qDebug()<<"B[0][3]:"<<B[0][3]; file1.close(); return a.exec(); }
零静 2013-07-09
  • 打赏
  • 举报
回复
@zhao4zhong1: 那么放在qt creator下应该怎么改写?
零静 2013-07-09
  • 打赏
  • 举报
回复
A= 1.33 0.99875 0 3.5 0.99342 0 9.1 0.99342 0 1.39 0.99650 0.537 1.43 0.9623 3.1 B= 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
赵4老师 2013-07-09
  • 打赏
  • 举报
回复
#include <stdio.h>
double A[5][3];
int B[5][4];
FILE *f;
int i;
int main() {
 f=fopen("train_data.txt","r");
 if (NULL==f) {
  printf("Can not open file train_data.txt!\n");
  return 1;
 }
 for (i=0;i<5;i++) fscanf(f,"%lf%lf%lf%d%d%d%d",&A[i][0],&A[i][1],&A[i][2],&B[i][0],&B[i][1],&B[i][2],&B[i][3]);
 fclose(f);
 for (i=0;i<5;i++) printf("%lg %lg %lg\n",A[i][0],A[i][1],A[i][2]);
 for (i=0;i<5;i++) printf("%d %d %d %d\n",B[i][0],B[i][1],B[i][2],B[i][3]);
 return 0;
}
One-_-Piece 2013-07-09
  • 打赏
  • 举报
回复
你的意思是每一列存在一个数组里吧?前三列不可能混着存吧,同理后四列也不可能混着存吧。 要是每列存一个数组,那就先声明7个数组,一行行的读,把每一行的内容分别存入这7个数组。

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧