c++读取txt数据,将其保存到二维数组

比如我现在有一个txt中数据每一行是12.323,52.032,-0.33,我现在要将每行按照逗号分开,并且将每个数据放入对应二维数组即a[0][0]=12.323,a[... 比如我现在有一个txt中数据每一行是12.323,52.032,-0.33,我现在要将每行按照逗号分开,并且将每个数据放入对应二维数组即a[0][0]=12.323,a[0][1]=52.032,a[0][2]-0.33.....,C++怎么实现 展开
 我来答
cdyzxy
推荐于2016-04-22 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3735万
展开全部
这种情况如果拘泥用c++语句的话会造成不必要的麻烦,用c更简洁:

#include<stdio.h>
#include<stdlib.h>
#define DATASIZE 1024
void main()
{ char buffer[256]; //每行最多255个字符
float a[DATASIZE][4]; //本程序只处理DATASIZE行数据,每行4个数据
int n;
FILE *fp;
if ( fp=fopen("data.txt","r") )
{ n=0;
while ( !feof(fp)&&n<DATASIZE )
{ fgets(buffer,255,fp);
sscanf(buffer,"%f,%f,%f,%f",&a[n][0],&a[n][1],&a[n][2],&a[n][3]);
n++;
}
fclose(fp);
}
else printf("无法打开文件读取数据\n");
//至此n行数据已经读入数组a
}
追问
谢谢朋友,如果我现在有百万条数据,读数据就得十几秒,sscanf函数感觉好慢呢,没有快点的方法吗
追答
如果你的文件只是.txt格式的,那基本上没有什么太好的办法了。
如果文件需要多次读入的话,可以考虑编个程序将文本格式的数据文件转换成二进制数据文件格式。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xu19951930
2014-02-13 · TA获得超过294个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:166万
展开全部
#include <stdio.h>
#include <fstream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
ifstream ifs(_T("C:\\1.txt"));
char szText[1024] = { 0 };
while (ifs.getline(szText, _countof(szText)))
{
char* pText = szText;
while (char* pSubText = _tcsstr(pText, _T(",")))
{
*pSubText = _T('\0');
printf(_T("%f\n"), atof(pText));
pText = pSubText + 1;
}
}
ifs.close();
return 0;
}

自己往数组里面填吧。

追问
你的意思是我每次读出文件的一行然后对每一行按照逗号截取?如果我的数据有几百万行效率会不会很低呢
追答
恩,对,效率怎么样,我不太清楚,你试试看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-02-12
展开全部
实现起来应该不是很难,但是c++不支持没有边界的数组定义吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式