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; 出来的是不一样的东西。

C++ 文件流 getline 获取下一行数据。
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.")==...

getline 读取一行内容(C++)
getline,用于读取一行内容。C++中,主要用途有以下两方面:1. 当字符串内包含空格时,如描述某种事物的详细信息。2. 一行内容是一个对象信息时,例如,一个学生信息以一行形式存储。实现getline功能时,记得包含头文件“iostream”。示例程序如下,其作用是读取一行内容,将整个一行字符串(可能含空格)赋值...

在C++的文件读写中,怎么直接从“下一行”开始读取数据?
由于C++处理文件是以流方式处理,要从下一行开始读取,先要能够将文件内部指针移到下一行,可以通过getline处理。istream inf("text.txt", ios::in);char buf[1000]; \/\/ 申请足够放入一行数据的大小 inf.getline(buf, 1000);这时文件内部指针就移到下一行的开始了。

C++ 使用getline():从文件中读取一行字符串
直接获取答案:C++中的getline()函数是一种强大的工具,用于从cin输入流或文件中读取一行字符串。它不仅适用于标准输入,也适用于fstream和ifstream这样的文件流对象。getline()方法有两种不同的语法形式:1. 用于从文件中读取bufSize-1个字符,直到遇到换行符或者达到指定长度,结尾自动添加'\\0'。这种方法...

C++中,getline函数的详解
C++中本质上有两种getline函数,一种在头文件中,是istream类的成员函数。一种在头文件<string>中,是普通函数。一、在中的getline函数有两种重载形式:istream& getline (char* s, streamsize n );istream& getline (char* s, streamsize n, char delim );作用是从istream中读取至多n个字符保存...

c++getline函数用法
C++中的getline函数用于从输入流中读取一行数据,并将其存储到指定的字符串变量中。它的基本用法如下:英文模式下输入:#include<iostream>#include<string>intmain(){std::stringline;std::cout<<“请输入一行文字:”<<std::endl;std::getline(std::cin,line);std::cout<<“您输入...

c++文件流如何跳行读取数据
getline(fp,astring);\/\/先写这句 然后 写你跳过那行后该写的代码 跳行,两种方法:1 读取一行, 然后把这些数据废弃,文件指针就指向下一行了 2 fseek 移动指针,移动到下一行的行首位置,然后读取就可以了。2 个方法要求知道需要移动的字符数, 可能不太实际,...

c++如何读取txt的数据(一行一行的读,从第一行读到最后一行)要详细代 ...
C++读取txt文本数据并一行一行的读方法如下:1、使用C++提供输入输出流的getline函数可以实现整行读取;完整代码如下:include<iostream>#include<fstream>using namespace std;int main(){ \/\/ 定义输入文件流类对象infileifstream infile("test.txt",ios::in);if(!infile){ \/\/ 判断文件是否存在 ...

C++中getline()函数在没有读完一整行的时候,下次再调用它,它会定位到...
+1-k,所以从第一个节点移动n-k次即可。struct node * fun(struct node *head,int k){ int len=0,i=0;struct node * p=head;while(p ){ len++;p=p->next ;} p=head;for (i=1;i<len+1-k;i++)p=p->next ;return p;} 接受到p后可以访问输入,如 test=fun(head,4);pr...

C++读取TXT 怎样每次读一行,循环读下一行
可以用getline函数,举个例子如下(从b.txt中按行循环读取内容):include <iostream>#include <fstream>#include <string>using namespace std;int main(){int cnt=0;string str;ifstream fin("b.txt", ios::in);if(!fin){printf("The file is not exist!");return -1;}while(getline(fin, ...

相似回答