(参看链接:https://blog.csdn.net/weixin_44307065/article/details/99683520)
一、字符输入(定义char c)
| 函数 | 用法 | 说明 | 
| cin | cin>>c | 不读取空格以及换行,不会从流中去掉换行和空格 | 
| scanf | scanf(“%c”,&c) | 可读取换行和空格 | 
| cin.get() | c=cin.get() cin.get(c) cin.get() | 可读取换行和空格,可不赋值仅读取一个字符 
 (常用于过滤流中换行) | 
| getchar() | c=getchar() getchar() | 可读取换行和空格,可不赋值仅读取一个字符 (常用于过滤流中换行) | 
二、输入字符数组输入(定义char s[])
| 函数 | 用法 | 说明 | 
| cin | cin>>s | 以换行和空格为结束标志,不读取换行和空格,不会从流中去掉换行空格 | 
| scanf | scanf(“%s”,s) | 以换行和空格为结束标志,不读取换行和空格,不会从流中去掉换行空格(注意变量列表中不带&) | 
| gets() | gets(s) | 以换行为结束标志,可读取空格,将换行从流中去掉 | 
| cin.get() | cin.get(s,n) cin.get(s,n,c) | 以换行为结束标志 以字符c为结束标志,当读入的字符数超过n-1时也会结束(第n位补’\0’)可读取空格,且不会将换行( c )从流中去掉 | 
| cin.getline() | cin.getline(s,n) cin.getline(s,n,c) | 以换行为结束标志 以字符c为结束标志,当读入的字符数超过n-1时也会结束(第n位补’\0’)可读取空格,将换行( c )从流中去掉 | 
三、字符串输入(定义string s)
| cin | cin>>s | 以换行和空格为结束标志,不读取换行和空格,不会去掉换行空格 | 
| getline() | getline(cin,s) getline(cin,s,c) | 前者以换行为结束标志,后者以字符c为结束标志,可读取空格,将换行( c )从流中去掉 | 
值得注意的是,以换行为结束标志的函数在它开始读入之前不能有换行否则会自动结束,这个时候要在之前加上getchar()去掉换行
四、cin、cin.get()、cin.getline()、getline()的区别
参看链接:https://blog.csdn.net/a3192048/article/details/80303547
C/C++输入字符以及字符串
一、字符输入(定义char c)
| 函数 | 用法 | 说明 | 
| cin | cin>>c | 不读取空格以及换行,不会从流中去掉换行和空格 | 
| scanf | scanf(“%c”,&c) | 可读取换行和空格 | 
| cin.get() | c=cin.get() cin.get(c) cin.get() | 可读取换行和空格,可不赋值仅读取一个字符 | 
| getchar() | c=getchar() getchar() | 可读取换行和空格,可不赋值仅读取一个字符 | 
二、输入字符数组输入(定义char s[])
| 函数 | 用法 | 说明 | 
| cin | cin>>s | 以换行和空格为结束标志,不读取换行和空格,不会从流中去掉换行空格 | 
| scanf | scanf(“%s”,s) | 以换行和空格为结束标志,不读取换行和空格,不会从流中去掉换行空格 | 
| gets() | gets(s) | 以换行为结束标志,可读取空格,将换行从流中去掉 | 
| cin.get() | cin.get(s,n) cin.get(s,n,c) | 前者以换行为结束标志,后者以字符c为结束标志,当读入的字符数超过n-1时也会结束(第n位补’\0’)可读取空格,且不会将换行( c )从流中去掉 | 
| cin.getline() | cin.getline(s,n) cin.getline(s,n,c) | 前者以换行为结束标志,后者以字符c为结束标志,当读入的字符数超过n-1时也会结束(第n位补’\0’)可读取空格,将换行( c )从流中去掉 | 
三、字符串输入(定义string s)
| cin | cin>>s | 以换行和空格为结束标志,不读取换行和空格,不会去掉换行空格 | 
| getline() | getline(cin,s) getline(cin,s,c) | 前者以换行为结束标志,后者以字符c为结束标志,可读取空格,将换行( c )从流中去掉 | 
值得注意的是,以换行为结束标志的函数在它开始读入之前不能有换行否则会自动结束,这个时候要在之前加上getchar()去掉换行
原文:https://www.cnblogs.com/wendcn/p/15056991.html