C++的getline()和get()函数

 在介绍这两个函数之前,我们最常使用的字符或者字符串输入函数是cin>>,所以我们应当明白有了cin之后为什么还需要这两个函数?

一.cin函数
cin>>a;(a如果是字符类型,读取一个字节,a如果是字符串类型,就读取一个单词)

  ①.赋值:将得到的输入赋给a
  ②.读取结束标志:使用空白(空格,制表符和换行符)来确定字符串的结束位置
  ③.返回值:返回istream类的对象cin

二.getline()函数
getline()是istream类的一个成员函数,所以我们应该使用istream的对象cin来调用它。
Ⅰ.cin.getline(Line,size);(获取一行输入)

 ①.赋值:将得到的一行输入赋给Line
 ②.读取结束标志:在读取指定size-1长度的字符或者遇到换行符时停止读取。读取size-1的长度之后,最后一个字符存储\0。
 如果遇到换行符结束,将换行符从输入流中提出
 并丢弃,并添加\0
 ③.返回值:返回istream类的对象cin

下面是关于该函数的测试代码:
getline(name,size)的测试代码

这里我们对一个字符数组进行输入,可以看到它只读取了9个字节,最后一个字节存储了换行符,可以使用cout<<p[9];看到换行符的结果。我们需要额外的
提及一下C风格的字符串的存储和操作,可以说,C风格的字符串的定义是以\0来作为字符串的结束标志,不管是字符数组和字符串类型的指针,它们都以\0
来结束。我们就可以想到不管是它们的打印还是复制等等操作,这些函数需要找到一个结束标志啊,那就是\0,让函数知道字符串已经结束了。
 (当然,类似于strncpy这样的函数显式的规定了字符串复制的长度也可以在达到规定长度的时候结束操作。)

Ⅱ.cin.getline(Line,size , char);(读取一行输入)

   ①.赋值:将得到的一行输入赋给Line
  ②.读取结束标志:在读取指定size-1长度的字符或者遇到换行符或者遇到字char结束,将换行符从输入流中提出并丢弃,并添加\0;
  如果遇到字符char结束,将字符char从输入流中提取并丢弃,并添加\0 
 ③.返回值:返回istream类的对象cin

三.get()函数
Ⅰ.cin.get(Line,size);(读取一行输入)

  ①.赋值:将得到的输入赋给Line
  ②.读取结束标志:在读取指定size-1长度的字符或者遇到换行符时停止读取。读取size-1的长度之后,最后一个字符存储\0。
  如果遇到换行符结束,将换行符保留在输入流中。
  ③.返回值:返回istream类的对象cin

Ⅱ.cin.get(Line,size , char);(读取一行输入)

 ①.赋值:将得到的输入赋给Line
  ②.读取结束标志:在读取指定size-1长度的字符或者遇到换行符或者字符char时停止读取。读取size-1的长度之后,最后一个字符存储\0。
  如果遇到换行符结束,将换行符保留在输入流中。如果遇到字符char结束,将char字符留在输入流中
  ③.返回值:返回istream类的对象cin

Ⅲ.cin.get(ch);(读取下一个输入字符,包括空格,制表符和换行符)

  ①.赋值:将得到的输入赋给ch
  ②.读取结束标志:读取一个字符即结束
  ③.返回值:返回istream类的对象cin

Ⅳ.ch=cin.get();(读取下一个输入字符,包括空格,制表符和换行符)

 ①.赋值:将得到的输入赋给ch
 ②.读取结束标志:读取一个字符即结束
 ③.返回值:返回int类型(字符ch对应的ASCII数值)
posted @ 2016-08-18 10:57  李子君啊  阅读(238)  评论(0编辑  收藏  举报