记录生活中的点点滴滴

0%

C++的输入问题

总结一下以下几个输入函数的用法:

  • cin
  • cin.get()
  • cin.getline()
  • getline()
  • gets()

cin >>

最基本的用法,遇到空格、Tab键、回车都会结束

案例一:输入数字

1
2
3
4
5
6
7
8
9
10
#include<iostream>
using namespace std;
int main(){
int a,b;
cin >> a >> b;
cout << "a : " << a << endl;
cout << "b : " << b << endl;
system("pause");
return 0;
}

输入:1 [空格] 2

输入:1 [Tab键] 2

输入:1 [回车] 2

都为以下输出:

1
2
a : 1
b : 2

案例二:输入字符串

1
2
3
4
5
6
7
8
9
10
#include<iostream>
#include<string>
using namespace std;
int main(){
string a;
cin >> a;
cout << a << endl;
system("pause");
return 0;
}

输入:ab 输出:ab

输入:ab [空格] cd 输出:ab

cin.get()

用法1:cin.get(字符变量名)可以用来接收字符

1
2
3
4
5
6
7
8
9
10
#include<iostream> 
using namespace std;
int main(){

char a;
cin.get(a);
cout << a << endl;
system("pause");
return 0;
}

输入:abc 输出:a

用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格

1
2
3
4
5
6
7
8
9
10
#include<iostream> 
using namespace std;
int main(){

char a[10];
cin.get(a, 10);
cout << a << endl;
system("pause");
return 0;
}

输入:ab[空格]cd[空格]ef 输出:ab cd ef

输入:abc[空格]def[空格]ghi 输出:abc def g(接受9个字符和1个 ‘\0’

用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足

cin.getline()

用法1:cin.get(字符数组名,接收字符数目)

这个用法和上个 cin.get() 的第二个用法一样,都是接受两个参数,就不写了

用法2:cin.get(字符数组名,接收字符数目,结束字符)

第三个参数是结束字符,遇到这个字符就结束,不包括这个字符,当然也必须在规定的数目内

1
2
3
4
5
6
7
8
9
10
#include<iostream> 
using namespace std;
int main(){

char a[6];
cin.getline(a, 6, 'a');
cout << a << endl;
system("pause");
return 0;
}

输入:bcdaefg 输出:bcd

第三个参数不写默认为 '\0' ,即回车,像在用法1中点一个回车程序就结束了,但是用法2中因为我们设置了结束字符为 'a' ,只要不超过6这个数量限制,点回车之后,我们还可以继续输入,当然输出中字符也会有回车

输入:[回车]bbbbbbbbb 输出:[回车]bbbb

getline()

接受一个字符串,可以接收空格并输出,需包含 #include

1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#include<string>
using namespace std;
int main(){

string str;
getline(cin, str);
cout << str << endl;
system("pause");
return 0;
}

输入:aaaaa bbb dd ee 输出:aaaaa bbb dd ee

和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数

gets()

接受一个字符数组,可以接收空格并输出

感觉和上一个 getline() 差不多,但是上面那个需要包含 #include ,这个不需要

并且上面那个是针对字符串的,这个是针对字符数组的

1
2
3
4
5
6
7
8
9
10
#include<iostream> 
using namespace std;
int main(){

char a[10];
gets(a);
cout << a << endl;
system("pause");
return 0;
}

输入:abc def 输出:abc def