2. getline()和get()

1.面向行输入:getline() ---其实还可以接受第三个参数。

  • getline()函数读取整行,调用该方法
  • 使用cin.getline()。该函数有两个参数,
  • 第一个参数是是用来存储输入行的数组的名称,
  • 第二个参数是要读取的的字符数。若这个参数为20,则函数最多读取19个字符加一个空字符。
  • getline()函数每次读取一行,通过换行符确定行尾,但不保存换行符。在哪存储字符串时,他用空字符来替换换行符。
cin.getline(array,20); //表示将把一行读入到array数组中,前提是这行字符不超过19个,

1. get()函数(有三种用法)

  • 该函数有几种变体,其中一种变体的工作方式与getline()类似,接收参数和解释参数发方式也相同,并且都读到行尾。
  • get()不会丢弃换行符。而是将其留在输入队列中。
  • 若连续两次调用get(),由于第一次调用后,换行符将留在输入队列中。因此第二代次调用时看到的第一个字符便是换行符,因此get()认为已到达行尾,而没有发现任何可取的内容。
cin.get(array1, Size);
cin.get(array2, Size);
  • 使用不带任何参数的cin.get(),可读取下一个字符(包括阔换行符),用它处理换行符,为读取下一行输入做好准备,可以解决上面的问题。
cin.get(array1, Size);
cin.get();
cin.get(array2, Size);
  • 将两个类成员函数合并
cin.get(array, Size),get();  //cin.get()返回一个cin对象,该对象被用来调用get()函数
  • 将输入中连续的两行分别读入到数组name1和name2中,效果和两次调用cin.getline()相同。
cin.getline(name1, Size).getline(name2, Size);

  

 

  

时间: 2024-08-03 18:04:27

2. getline()和get()的相关文章

string 类型的输入操作符 cin 和 getline 函数分别如何处理空白字符?

string用来读取一个word : string 类型的输入操作符 cin 对空白字符的处理:读取并忽略有效字符(非空白字符)之前所有的空白字符,然后读取字符直至再次遇到空白字符,读取终止(该空白字符仍留在输入流中). getline 函数用来读取整行文本,接受两个参数:一个输入流对象和一个 string 对象,例如 getline(cin,line): getline 函数对空白字符的处理:不忽略行开头的空白字符,读取字符直至遇到换行符,读取终止并丢弃换行符(换行符从输入流中去掉但并不存储在

C/C++读写csv文件(用getline探测逗号分隔符)

csv文件其实就是文本文件,每行字段用逗号分隔. 代码 [cpp] view plain copy print? #include <iostream> #include <string> #include <vector> #include <fstream> #include <sstream> using namespace std; int main() { // 写文件 ofstream outFile; outFile.open(&q

getline函数(精华版)

在我的印象中,getline函数经常出现在自己的视野里,模糊地记得它经常用来读取字符串 .但是又对它的参数不是很了解,今天又用到了getline函数,现在来细细地总结一下: 首先要明白设计getline函数的目的,其实很简单,就是从流中读取字符串.而且读取的方 式有很多,包括根据限定符,根据已读取的字符的个数.从这个函数的名称来看,它的直观 意义是从流中读取一行,但是大家不要被这表面的现象所迷惑.其实如果让我来为这个函数 去一个名字的话,或许我会取一个getString,因为它的目的本来就是从流

getline数据来源你的三种方式

(1)getline从交互式的用户输入中\c中获取内容: # awk 'BEGIN {system("echo \"Input your name:\"");getline d;print "\nYour name is",d"!\n"}' Input your name: berry Your name is berry! # awk 'BEGIN {system(" echo \"Input your

get( )与getline( )区别

get与getline区别不是很大,但一个明显的区别是get遇到 '\n '字符后便返回,这是 '\n '还在缓冲区中,所以下次读出来的将是 '\n ',而getline遇到 '\n '也返回,但它会把 '\n '从缓冲区里移除掉 所以很多时候用getline方便些 cin.get()每次读取一整行并把由Enter键生成的换行符留在输入队列中,比如: #include <iostream>using std::cin;using std::cout;const int SIZE = 15;in

关于c++中 get 和getline

1 cin 遇到空格 回车都会结束输入 所以就无法完成 12  34这样一次性输入 2 getline() 和get() 这两个函数都读取一行输入,然而,getline()将丢弃换行符 而get()将换行符保留在输入序列中 简单举例: 1 cin.getline(name,20);//将输入读到长度为20的name数组中 2 cin.get(name,10); cin.get(name1,10); 当第一次调用后,换行符留在输入列队中,因此第二次调用看到的第一个字符便是换行符, 因此get()认

get getline

char get()//从输入对象读入一个字符 istream * get(char &ch)//读到ch中 char get(char a[],int size, char delimitchar)//读到数组中 void put(char ch) cin.getline(char a[], int size, int delimitchar);

C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法(转)

学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1.cin 2.cin.get() 3.cin.getline() 4.getline() 5.gets() 6.getchar() 附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符 1.cin>>          用法1:最基本,也是最常用的用法,输入一个数字: #includ

c++中basic_istream::getline()的返回值何时为真

今天在看primer,17ch中的IO库再探,做课后练习,要求用ifstream.getline(char*, const unsigned, char)读取一个文件,用循环: while(ifs.getline(str,10,'\n')) 来读取文件,但while的判断条件一直为假,也就是说ifs.getline((str,10,'\n'))读文件的第一行的9个字符后就将ifs置为了badbit了,条件进一步判断为false. 经过反复验证与查相关资料后,发现,basic_istream::g

getline()函数详解--转自黄昏飘雪的那夏

本文转自黄昏飘雪的那夏,原作者www.cnblogs.com/overcode 学习C++的同学可能都会遇到一个getline()函数,譬如在C++premer中,标准string类型第二小节就是“用getline读取整行文本”.书上给的程序如下: int main() { string line: while(getline(cin,line)) cout<<line<<endl; return 0; } 大家会发现运行时怎么也跳不出循环,甚至会发生各种莫名其妙的错误.这是为什么