C++中:cin,cin.get(),cin.getline(),**getline()**的用法
C++输入过程中,是把输入加载到缓冲区中,然后对缓冲区中的字符进行读取。
1、转义字符:
常用的转义字符有:’/0’, ‘/n’, ‘/t’;
其中:
**’/0’**为空字符,相当于空格键,作为字符串结束符使用;
**’/n’**为换行符,作为输出结束符使用;
**’/t’**为水平制表符,相当于tab键;
例如:
对于一个字符串,例如“hello”,它是由字符“h e l l o /0”,在内存中连续存放。
2、cin的用法
a.连续输入多个字符或者数字
b.输入一个字符串,以“空格”、“回车”、“tab”键结束。
程序示例:
#include
using namespace std;
int main()
{
char ch[10];
cin >> ch;
cout << ch << endl;
return 0;
}
输入输出结果为:
可以看出,空格后的字符串“sdf”并没有被输出。
若变量是数组,在没有空格、回车、tab键的情况下,输入字符长度要小于等于数组长度。
3、cin.get()的用法
cin.get()在缓冲区遇到回车,空格,tab键也会作为字符留在缓冲区,即回车,空格,tab键也可以输出。
语法规则:
a.一参数:cin.get(变量名)
b.二参数:cin.get(字符串数组变量名,字符串长度)
c.三参数:cin.get(字符串数组变量名,字符串长度,标志结束字符)
其中:二参数和三参数的情况下,变量必须为char类型数组。即变量定义为:
char 变量名[n];
程序示例:
a.一参数:
这种单字符的输入是把字符的ASCII码值存入变量中。
当输入字符足够后回车结束输入。当输入过多时,取前几个。
#include
using namespace std;
int main()
{
char ch1,ch2,ch3;
ch1= cin.get();
ch2= cin.get();
ch3= cin.get();
cout <
b.二参数:
输入字符串长度可以大于数组定义的长度。
数组长度要大于等于cin.get(字符串数组变量名,字符串长度)的字符串长度。
#include
using namespace std;
int main()
{
char ch[10];
cin.get(ch,10);
cout << ch << endl;
return 0;
}
c.三参数
用法与二参数一样,只是多了个标志结束字符,可参考cin.getline()的用法,不再赘述。
cin.get和cin.getline的区别:
cin.get()在输入足够条件下,遇到“回车”时会结束目前输入,但不会删除缓冲区中的“回车”;
cin.getline()当遇到“回车”时会结束当前输入,但会删除缓冲区中的“回车”。
4、cin.getline()的用法
语法规则:
cin.getline(字符串的变量名,接收字符的个数n,‘标志结束字符’);
其中:
a.第2个参数表示读取的字符个数为n-1个,因为最后一个字符为’/0’;
b.若第3个参数省略,则第3个参数系统默认为’/0’,由于字符串最后一个字符默认为’/0’,所以在字符个数足够的情况下,输出全部字符串;
程序示例:
#include
using namespace std;
int main()
{
char ch[10];
cin.getline(ch, 3, 's');
cout << ch << endl;
return 0;
}
输入输出结果为:
在遇到标志结束字符前,输出前2个字符,最后一个字符为’/0’
输出已标志结束字符为止
5、getline()的用法
与cin.getline()属于istream的库函数不同,getline()是string库的函数,因此在使用前,需要加上:
#include
a.定义的字符串变量要用“string”来定义
b.定义的变量不能是数组。
语法规则:
getline(cin,字符串变量名,‘标志结束字符’);
程序示例:
#include
#include
using namespace std;
int main()
{
string str;
getline(cin,str,'d');
cout << str<< endl;
return 0;
}
6、cin,cin.getline()的同时使用
在单独使用cin时,由于cin可以通过空格键结束一个变量的输入,例如:
cin>>a>>b;
这就是通过空格依次输入a和b。
而若:cin和cin.getline()同时使用,也是这个原理。
程序示例:
#include
using namespace std;
int main()
{
char ch[10];
cin >> ch;
cout << ch<
输入输出结果为:
从结果可以看出:
第一次输出的ch变量为第一个空格前的字符串;
第二次输出的ch变量为除了第一个字符串后到标志结束字符之间的字符串;