C++输入函数 总结

cin<<的结束符有enter space tab
cin.get()的结束符只有enter,但会把enter放入队列等待
cin.getline()的结束符也只有enter,但不会把enter放入队列
1.cin.getline():
cin的getline需要这样用
   cin.getline(s,50,'\n'); 或者
   cin.getline(s,50);
cin.getline(s)没有这种用法,
其中s需要时char *或unsigned char *,50表示读入大小(最大),'\n'表示分隔符,可以省略,默认就是这个

getline(cin,s),s需要是string,需要引入string头文件,std::string空间引入
cin.getline适合你知道读入大小,固定char数组,速度快
getline(cin,s)不需要指定大小,但速度慢、生成的文件大,适合偷懒用


2.cin.get(): 输入过多的字符会存储在缓冲区!!!
 单个字符输入:
char ch;
ch=cin.get(); //或者cin.get(ch);
含空格字符串输入:
char a[20];
cin.get(a,20);

c=getchar(); 功能:读入一个字符 说明:调用此函数时要求在程序的第一行有预编译命令:#include<stdio>,不过在做c++时

有#include<iostream>也够了。变量c获得一个从标准设备上读取的字符代码值。当从键

盘上输入^z(即CTRL和Z键同时按下)时,C得到的值是-1,^z称文件结尾,在程序中经

常使用符号常量EOF表示。 二: 字符串输入函数 char *s; gets(s); 功能:读取一个字符串,存入s所指向的内存内。当遇到<CR>时结束字符串的输入,并且

自动将<CR>字符转换成‘\0’(即NULL)放在串的末尾,使其构成一个字符串。 说明:S是一个字符串指针,它指向所取字符串的首地址。正常返回时,返回取到字符串

的首地址。如遇到文件尾货出错时返回NULL。NULL定义的形式为“#DEFINE NULL  0” 它包含在stdio.h的头文件中。若再c++中使用则要加头文件#include<string> 类似cin.getline()里面的一个例子,gets()同样可以用在多维数组里面: #include<iostream> #include<string> using namespace std; main () { char m[3][20]; for(int i=0;i<3;i++) { cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl; gets(m[i]); } cout<<endl; for(int j=0;j<3;j++) cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl; } 请输入第1个字符串: kskr1 请输入第2个字符串: kskr2 请输入第3个字符串 kskr3 输出m[0]的值:kskr1 输出m[1]的值:kskr2 输出m[2]的值:kskr3 自我感觉gets()和cin.getline()的用法很类似,只不过cin.getline()多一个参数罢了; 这里顺带说明一下,对于本文中的这个kskr1,kskr2,kskr3的例子,对于cin>>也可以适用

,原因是这里输入的没有空格,如果输入了空格,比如“ks kr jkl[回车]”那么cin就会已

经接收到3个字符串,“ks,kr,jkl”;再如“kskr 1[回车]kskr 2[回车]”,那么则接

收“kskr,1,kskr”;这不是我们所要的结果!而cin.getline()和gets()因为可以接收空格,

所以不会产生这个错误; 三. cin.get() 用法1: cin.get(字符变量名)可以用来接收字符 #include <iostream> using namespace std; int main () { char ch; ch=cin.get();               //或者cin.get(ch); cout<<ch<<endl; } 输入:jljkljkl 输出:j 用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格 #include <iostream> using namespace std; main () { char a[20]; cin.get(a,20); cout<<a<<endl; } 输入:jkl jkl jkl 输出:jkl jkl jkl 输入:abcdeabcdeabcdeabcdeabcde (输入25个字符) 输出:abcdeabcdeabcdeabcd              (接收19个字符+1个'\0') 用法3:ch=cin.get(); 同cin.get(ch);相同都是输入一个字符。 说明;可以读入包括空格、跳格和回车在内的空白字符 . 四: cin.getline()   // 接受一个字符串,可以接收空格并输出 #include <iostream> using namespace std; main () { char m[20]; cin.getline(m,5); cout<<m<<endl; } 输入:jkljkljkl 输出:jklj 接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出; 如果把5改成20: 输入:jkljkljkl 输出:jkljkljkl 输入:jklf fjlsjf fjsdklf 输出:jklf fjlsjf fjsdklf //延伸: //cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束

字符) //当第三个参数省略时,系统默认为'\0' //如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入

jkaljkljkl时,输出jk 当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法: #include<iostream> #include<string> using namespace std; main () { char m[3][20]; for(int i=0;i<3;i++) { cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl; cin.getline(m[i],20); } cout<<endl; for(int j=0;j<3;j++) cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl; } 请输入第1个字符串: kskr1 请输入第2个字符串: kskr2 请输入第3个字符串: kskr3 输出m[0]的值:kskr1 输出m[1]的值:kskr2 输出m[2]的值:kskr3 五: getline()     // 接受一个字符串,可以接收空格并输出,需包含“#include<string>” #include<iostream> #include<string> using namespace std; main () { string str; getline(cin,str); cout<<str<<endl; } 输入:jkljkljkl 输出:jkljkljkl 输入:jkl jfksldfj jklsjfl 输出:jkl jfksldfj jklsjfl 和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一

样的两个函数







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值