C++ 中 cin、cin.get()、cin.getline() 的区别

cin

不接受 white space(包括空格、制表符和换行符)且以 white space 为分隔符;

使用 white space(包括空格、制表符和换行符)来确定字符串的结束位置,这意味着 cin 在获取字符数组输入时只能读取一个单词;

读取单词后,cin 将该字符串放到数组中,并自动在结尾添加空字符。

cin.getline()

读取行,通过回车键输入的换行符来确定输入结尾,读取并丢弃换行符;

该函数有两个参数,第一个参数是用来存储输入行的数组的名称,第二个参数是要读取的字符数;

可以接收空格、Tap键且以回车符为结束符;

可以用两种不同的方式来调用 getline() 函数。

getline(cin,number)

cin.getline(str,number)

cin.get()

与 getline() 类似,接受参数相同,解释参数的方式也相同,并且都读取到行尾;

但 get() 不再读取并丢弃换行符,而是将其留在队列中;

可以接收空格、Tap键且以回车符为结束符;

不带任何参数的cin.get() 可以读取下一个字符(换行符也可)。

空行(直接空行)

  get(str,Size):str 将得到 '\0',并设置 cin 实效位,关闭输入,但回车依然留在输入缓冲区中,因此如果我们用 clear() 重置 cin,其下一个读取输入的操作将捕获 '\n';
  getline(str,Size):str将得到 '\0',并将 '\n' 删除掉,不置实效位,不关闭输入。对后续无影响。

参考资料:

1. C++ primer plus(sixth edition):https://item.jd.com/49822685416.html

你可能感兴趣的:(C/C++,C++,cin,getline,get)