getline()与get()(c++学习笔记)

istream中的类(如cin)提供了一些面向行的类成员函数:getline()和get()

1.getline()函数

读取整行,使用回车键输入的换行符来确定输入结尾。

调用方法:cin.getline(参数1,参数2)

该函数有两个参数,第一个参数是用来存储输入行的数组的名称,第二个参数是要读取的字符数,如果这个参数为20,则函数最多读取19个字符,余下的空间用于存储自动在结尾处添加的空字符。

getline()成员函数在读取指定数目的字符或遇到换行符时停止读取。

它通过换行符来确定行尾,但不保存换行符,相反,在存储字符串时,它用空字符来替换换行符。

2.get()函数

调用方法:cin.get(参数1,参数2)

与getline()一样,接受的参数相同,解释参数的方式也相同,并且都读取到行尾,但get不再读取并丢弃换行符,而是将其留在输入队列中。

例:cin.get(name,Size);

       cin.get(dessert,Size);

由于第一次调用后,换行符将留在输入队列中,因此第二次调用时看到的第一个字符便是换行符,因此get()认为已达到行尾,而没有发现任何可读取的内容。

可用不带参的cin.get()可读取下一个字符(即便是换行符),因此可以用它来处理换行符,为读取下一行做好准备。

也可将两个类成员拼接起来使用,如cin.get(name,Size).get();

当使用get()来读取整行,如何知道停止读取的原因是由于已经读取了整行,而不是由于数组已填满?

查看下一个字符,如果是换行符,则已读取整行,否则,说明该行还有其他输入。

3.get(char &)与get(void)成员函数(istream类)

  • 方法get(char &)与get(void)提供 不跳过空白的单字符输入功能。
  • get(char &)成员函数返回一个指向用于调用它的istream对象的引用,这意味着可以拼接get(char &)后面的其他抽取。
  • get(void)成员函数的返回类型为int(或某种更大的整形,这取决于字符集和区域)

4.getline()与get()

  • istream & get(char *,int,char);
  • istream & get(char *,int);
  • istream & getline(char *,int,char);
  • istream & getline(char *,int);

第一个参数是用于放置输入字符串的内存单元的地址,第二个参数比要读取的最大字符数大1(额外的一个字符用于存储结尾的空字符,以便将输入存储为一个字符串)。

第三个参数指定用作分界符的字符,只有两个参数的版本将换行符用作分界符。

原文地址:https://www.cnblogs.com/zhi321/p/11427290.html