今天在学习C++的时候对getline()函数和get()函数有点蒙,特地去找了些资料,加上自己上机实验了一些,整理了一些二者的区别。
首先二者都是可以从输入流中获得字符,get()函数可以不设置参数,如char ch=cin.get();
也可以设置一个参数,这个参数为一个字符变量例如char ch;
cin.get(ch);//表示把从输入流中得到的字符赋值给ch变量 。
上面这两个用法与c语言中的getchar()相似,这里不做赘述。
下面来说一下 get()函数 带两个参数或者三个参数的用法,两个参数时调用形式为:
cin.get(指针名或数组名,获得字符的数量);
表示把获得的字符付给该数组或字符指针,例如:
`char ch[20];
cin.get(ch,15);`//把字符串赋值给数组,并在结尾加一个’\0’;
三个参数的用法与两个参数的用法相似,只不过多了一个参数终止字符;调用形式为cin.get(指针名或数组名,字符个数,终止字符);例如:
char ch[20];
cin.get(ch,15,'/');
表示把从输入流中获得的15个字符赋给ch数组,如果这期间遇到了终止字符’/’,则只把终止字符前面的字符赋值给数组。
getline()函数调用形式与get()函数的后两种用法相似,即也是从输入流中获得指定长度字符,赋值给数组或字符指针。
那二者的区别在于哪呢?先上一段代码
#include"iostream"
using namespace std;
int main()
{
char ch[20];
char *pt = ch;//指针指向该数组
cin.getline(pt,15,'/');//注意结尾会自动加'\0'
cout<< "the first part is:" << pt << endl;
cin.getline(pt,15, '/');