参考连接:https://www.cnblogs.com/wft1990/p/5861529.html
一、cin,可以接受数字和字符串的输入,遇空格,Tab和回车结束
二、cin.get()
用法1:用来接受一个字符,cin.get(字符变量) 与 字符变量 = cin.get() 结果一样 例子如下:
#include<iostream>
#include<string>
using namespace std;
int main() {
char next;
//next = cin.get();
cin.get(next);//cin.get(next)与next = cin.get()一个意思,查看cin.get()内置函数可以发现返回的this指针
cout << next << endl;
while (1);
}
输入abc
输入空格+bc
用法2:cin.get(字符数组名,字符数组长度),用于接受固定长度的字符串,包括空格
#include<iostream>
#include<string>
using namespace std;
int main() {
char next[10];
cin.get(next,10);
cout << next << endl;
while (1);
}
输入:abc bca
输入:abcdefghij(10个字符长度)
因为字符数组后面有一个‘\0’结束符,所以只能存放9个元素。
这里顺便记录一下计算字符数组长度的两个常用方法:
sizeof(数组名)/sizeof(数组类型)和strlen(数组名)
1、sizeof() 如果数组长度在中括号【】 中给定,那么sizeof()方法求得就是中括号【】的大小;如果数组长度没有在【】中指定,那么sizeof()计算数组长度的结果就是包括结束符‘\0’的长度。
2、strlen()求字符长度求的结果就是不包括‘\0’的长度
#include<iostream>
#include<string.h>
using namespace std;
int main() {
char str1[10] = "China";
char str2[] = "China";
int sizeof_len_str1 = sizeof(str1) / sizeof(char);
int sizeof_len_str2 = sizeof(str2) / sizeof(char);
cout << sizeof_len_str1 << endl;//10 [10]确定大小,sizeof求的结果和[]一样
cout << strlen(str1) << endl;//5 strlen()只计算实际字符个数,不包括结束符'\0'
cout << sizeof_len_str2 << endl;//6 []没有指定大小,sizeof求的结果包括结束符'\0'
cout << strlen(str2) << endl;//5 strlen()只计算实际字符个数,不包括结束符'\0'
while (1);
}
三、 cin.getline() 接受一行字符,三个参数,第一个参数是数组名,第二个参数是接受的长度,第三个是默认参数'\0'表示输入的结束符。
#include<iostream>
using namespace std;
int main() {
char ch[5];
cin.getline(ch,5);//abcdefg
cout << ch << endl;//abcd
while (1);
}
设置‘c’为结束符
#include<iostream>
using namespace std;
int main() {
char ch[5];
cin.getline(ch,5,'c');//abcdefg
cout << ch << endl;//ab
while (1);
}
四、getline()接受一个字符串,可以接受空格并输出,需要包含#include<string>
#include<iostream>
#include<string>
using namespace std;
int main() {
string s;
getline(cin,s);//abc cba
cout << s << endl;//abc bca
while (1);
}