本文共 2083 字,大约阅读时间需要 6 分钟。
常用的一些输入方法:
1.cin 2.cin.get() 3.cin.getline() 4.getline() 5.getchar()这是最常用的输入,可以同时接收几个多个参数,并且它会自动过滤掉空白字符(Tab,空格,换行….)
这也会使得多出来的输入留在输入流中,它只能截断到需要的对应个数的参数int a,b;cin>>a>>b;cout<<"a = "<<<<"b = "< <
如上的6,7留在了输入流中,没被读取到
cin接收一串字符串:和上面的规律一样,遇见空白字符直接截断,到这为止的字符串char a[20];cin>>a;cout<<"a = "<<
用来接受单个字符
char ch;ch = cin.get(); //或cin.get(ch)cout<<"ch = "<<
接收指定长度的字符数组
cin.get(字符数组名,指定长度),这个函数遇到换行结束,空格和tab都算一个有效字符char ch[20];cin.get(ch,20);cout<<"ch = "<<
cin.get()这个直接使用可以用来某些情况从输入流中提取一个字符,任意字符包括空白,读到EOF返回结束标识
int c;cout<<"enter a sentence:"<
接收一个字符串,可以接收空格并输出
这个函数其实和上面写到的带参数的cin.get()类似,这个函数的完整形式是:cin.getline(接受字符串的名字,接受的数目,指定结束字符) 一般我们省略了第三个参数,系统默认是以’\n’为EOF,我们来试着改一下:char ch[20];cin.getline(ch,20,'a');cout<<"ch = "<<
这里我们发现一个问题:cin.get()也能指定三个参数,那么这和cin.getline()不就一模一样了么?
答案是:它们两唯一的区别是cin.get()会保留最后输入的’\n’在缓存区中,而cin.getline()会抛弃这个’\n’ 举个例子:char name[15];cin.get(name,15);cout<<"name = "<<<"\n";char addr[15];cin.get(addr,15);cout<<"addr = "< <<"\n";//这里是两个cin.get(),也就是会把'\n'保留在缓存区,那我们知道name读完之后,cin.get()继续读缓存区,这是看见一个'\n',就直接结束了/*hello worldname = hello wolrdaddr = *///很明显,addr什么只读取到了一个结束符,没读到任何一个有效字符
那么,换成cin.getline()呢?
char name[15];cin.getline(name,15);cout<<"name = "<<<"\n";char addr[15];cin.get(addr,15);cout<<"addr = "< <<"\n";/*hello (enter)name = helloworld (enter)addr = world*///这时候因为cin.getline()将输入的enter丢弃了,所以addr能读取到'\n'后的字符,并以enter结束读取
接受一个字符串,可以接收空格并输出,但是它是C风格字符串中的函数,需包含#include
string str;getline(cin,str);cout<<
这个函数和之前的cin.getline()用法也类似,也能指定结束符,但是不能指定长度。
原形如下: istream& getline ( istream& is, string& str, char delim );istream& getline ( istream& is, string& str );
这两个函数是C中的字符输入输出函数,getchar()和cin.get()功能一样,都是接收一个单字符
函数原形: #includeint c;c = getchar();putchar(c);putchar('\n');/*helloh*///只读取和输出单个字符,这两个函数比较简单//putchar()接受整形,是因为ASCII中的128个字符都能用整形表示,你可以用整数来代表,如65 对应 'A'//同时,getchar()的返回值是int型,cout一个getchar时候是输出字符在ASCII对应的数字,如c是'A'就输出65
有什么错误还请指出,谢谢
转载地址:http://ehmmi.baihongyu.com/