C++ 文件流 getline 获取下一行数据。

现有一个txt。每行仅有一个词:

No.
1
0.000000
192.168.0.100
192.168.0.102
TCP
4480
>
commplex-link
[SYN]
Seq
0
Win
64240
Len
0
MSS
1460
SACK_PERM=1

用ifstream读入该txt,循环getline存入buffer,
当buffer为'No.'时,下一行数据'1'赋值给int num,下下行数据”0.000000“赋值给float time;
当buffer为'Seq'时,下一行数据'0'赋值给int seq;
当buffer为'Win'时,下一行数据'64240'赋值给int win;
当buffer为'Len'时,下一行数据'0'赋值给int len。

我用buffer+1,输出来是地址,不对。

我本来就对输入输出流不是很理解,跪求能人解答。

回答满意,可追加分。谢谢。

第1个回答  推荐于2016-07-12
#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
#include<assert.h>
using namespace std;

void main()
{
char buffer[50];
ifstream inf("E:\\test\\test.txt");
assert(inf);
int num,seq,win,len;
float time;
while(inf.getline(buffer,50))
{
if(strcmp(buffer,"No.")==0)
{
if(inf.getline(buffer,50))
num=atoi(buffer);
if(inf.getline(buffer,50))
time=atof(buffer);
}
if(strcmp(buffer,"Seq")==0)
{
if(inf.getline(buffer,50))
seq=atoi(buffer);
}
if(strcmp(buffer,"Win")==0)
{
if(inf.getline(buffer,50))
win=atoi(buffer);
}
if(strcmp(buffer,"Len")==0)
{
if(inf.getline(buffer,50))
len=atoi(buffer);
}
}
inf.close();
cout<<"num:"<<num<<endl;
cout<<setiosflags(ios::fixed)<<setprecision(6)<<"time:"<<time<<endl;
cout<<"seq:"<<seq<<endl;
cout<<"win:"<<win<<endl;
cout<<"len:"<<len<<endl;
}本回答被提问者采纳
第2个回答  2011-01-06
buffer 用pointer 不要用数组
你仔细复习一下pointer的用法,
int *p = 1;
cout << p <<endl;
cout << *p <<endl; 出来的是不一样的东西。
相似回答