区别scanf(),gets(),fgets(str,max,file),cin,getline(cin, str), cin.getline(str[], max),getchar()
1、scanf()会遇到空格回车停止,字符串中末位是’\0’,但输入形式灵活
2、gets()一次输入一行字符串,可以接收空格,遇见‘\n’停止,并不接收’\n’,若使用puts()输出时,会自动输出’\n’
3、fgets()实为文件读入fgets(字符数组,最大输入位,文件),若为键盘输入,第三个参数则为stdin(标准输入),fgets()遇见‘\n’停止,并实际接收’\n’
4、如若使用string容器,只能使用与cin有关的函数如,cin,getline(cin, str)
4.1、cin会遇到空格和换行停止
4.2、getline(cin, str),可以接收空格
5、cin.getline()是C++针对字符数组特有的输入方式,cin.getline(字符数组,最大输入位),可以接收空格,不会接收‘\n’
6、getchar()输入单个字符,通常使用getchar()来吃掉前面的换行符
关于读入速度的比较
gets()/fgets() > scanf() > cin/getline(最慢)