C++ 中 cin.get()、cin.getline()、getline()的区别
文章目录
1 输入输出流
#include<iostream>
1.1 cin.get() 用法
1.1.1 cin.get(字符变量名)可以用来接收一个字符
#include <iostream>
using namespace std;
int main (){
char ch;
ch = cin.get(); //或者cin.get(ch);
cout << ch << endl;
return 0;
}
// 输入:jljkljkl
// 输出:j
1.1.2 cin.get(?,?)用来接收一行字符串,可以接收空格
- cin.get(字符数组名,接收字符数目)
#include <iostream>
using namespace std;
int main (){
char a[20];
cin.get(a,20);
cout << a << endl;
return 0;
}
// 输入:jkl jkl jkl
// 输出:jkl jkl jkl
// 输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)
//输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')
1.1.3 cin.get()舍弃回车
- cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足。
- 用法看这道题( 翻转字符串)。
1.2 cin.getline() 用法
1.2.1 cin.getline()接受一个字符串(可含空格)
#include <iostream>
using namespace std;
int main (){
char m[20];
cin.getline(m,5);
cout << m << endl;
}
// 输入:jkljkljkl
// 输出:jklj
// 接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出。
2 string类
#include<string>
2.1 getline() 用法
2.1.1 getline() 接受一个字符串(可含空格)
#include<iostream>
#include<string>
using namespace std;
int main (){
string str;
getline(cin,str);
cout << str << endl;
return 0;
}
// 输入:jkljkljkl
// 输出:jkljkljkl
// 输入:jkl jfksldfj jklsjfl
// 输出:jkl jfksldfj jklsjfl
3 总结一下
写了这么多,好像有用的需要记住的也就三点。
-
cin.get();
可以吃掉一个回车。 -
getline(cin, str);
输入字符串。 -
cin.getline(charstr, num) ;
可以用来截断字符串。