c++读取文本文件数据,每行数据存入一个vector当中 55

c++读取文本文件数据,使用二维vector,vector<vector<int>>存储数据,每行数据存入一个vector当中,文本数据的行列数不确定... c++读取文本文件数据,使用二维vector,vector<vector<int>>存储数据,每行数据存入一个vector当中,文本数据的行列数不确定 展开
 我来答
bd...4@33sn.cc
2017-08-07 · 超过34用户采纳过TA的回答
知道答主
回答量:148
采纳率:0%
帮助的人:46.2万
展开全部
程序代码:
#include <stdio.h>
#include <string.h> //包含memset函数
#include <stdlib.h> //包含double atof(const char *nptr);

#define MAX_LEN 260

#ifndef _MSC_VER
#define bool int
#define false 0
#define true 1
#endif

int main()
{
float num[100]={0};
int num_index = 0;
FILE * lpFile = NULL;
lpFile = fopen("2.txt","r");
if(lpFile)
{
char ch;
char szBuf[MAX_LEN]={0};
bool bHasSpace=false;
int i=0;
while((ch=fgetc(lpFile)) != EOF)
{
//过滤多余空格,如果有\r或\t ,顺便过滤掉
if(ch == '\r')continue;
while( ch == ' ' || ch == '\t')
{
ch=fgetc(lpFile);
bHasSpace = true;
}

if(bHasSpace)//多个空格使用一个空格代替
{
bHasSpace = false;
szBuf[i++]=' ';
}
szBuf[i++]=ch;

if( ch == '\n' || ch == EOF)//读完一行
{
//开始解析字符串
if(num_index<100)
{

int count=0;

for(char * p = szBuf;*p;p++)
{
if(*p == ' ')
count ++;
if(count == 5)
{
char szNum[MAX_LEN]={0};
int tmp=0;
while(*(++p) && *p != ' ')
{
szNum[tmp++]=*p;

}
if(tmp)
{
num[num_index++] = atof(szNum);
}
break;
}
}
}

i=0;
memset(szBuf,0,sizeof(szBuf));
if(ch == EOF)
break;
}
}

fclose(lpFile);
}
for(int i=0;i<num_index;i++)
{
printf("%f\n",num[i]);
}
return 0;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式