txt格式如下:
8 9
1
5 2 1
怎么样逐行读取数值,并且把每一行中的数值放入vector中,上面的txt内容读取结果,应该是三个vector,第一个vector包含两个数值8和9,第二个vector包含一个数值1,第三个vector包含3个数值5,2,1. 讨教大家怎么样快速实现。
8 9
1
5 2 1
怎么样逐行读取数值,并且把每一行中的数值放入vector中,上面的txt内容读取结果,应该是三个vector,第一个vector包含两个数值8和9,第二个vector包含一个数值1,第三个vector包含3个数值5,2,1. 讨教大家怎么样快速实现。
解决方案
10
外层循环按行读
内层循环按空格切分,并放入到vector中
内层循环按空格切分,并放入到vector中
10
三层循环:
第一层循环读取文件到buffer中,第二层循环按行分割,第三层循环分割数字
char buf[256];
int len=0;
int temp;
memset( buf, 0, sizeof(buf));
while(1)
{
temp = fread (buf+len,255-len);
if ( temp <= 0 )
break; // 读取不到内容了就退出
len += temp;
第一层循环读取文件到buffer中,第二层循环按行分割,第三层循环分割数字
char buf[256];
int len=0;
int temp;
memset( buf, 0, sizeof(buf));
while(1)
{
temp = fread (buf+len,255-len);
if ( temp <= 0 )
break; // 读取不到内容了就退出
len += temp;
int offset = 0;
while(1)
{
char *line = getline(buf, offset); // 分割出一行,offset为偏移量计数器
if ( line == NULL )
break;
int mmg = 0;
vector<int> vecd;
while(1)
{
char *dig = getdig(line, mmg); // 获取一个数字,mmg为偏移量计数器
if ( dig==NULL )
break;
temp = atoi(dig);
vecd.pusb_back(temp);
}
}
if ( offset > 0 )
{
len -= offset;
memcpy( buf, buf + offset, len );
memset( buf + len, 0, 256 – len );
}
}
以上伪代码,可以对它进行补充修改
10
http://www.cnblogs.com/linxr/archive/2011/12/28/2304350.html