C中cin输入流的多种函数用法.doc_第1页
C中cin输入流的多种函数用法.doc_第2页
C中cin输入流的多种函数用法.doc_第3页
C中cin输入流的多种函数用法.doc_第4页
C中cin输入流的多种函数用法.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

语法C+ 中cin 输入流的多种函数用法 cin、cin.get()、cin.getline()、getline()、gets()函数的用法1、cin 用法1:最基本,也是最常用的用法,输入一个数字:#include using namespace std;main ()int a,b;cinab;couta+bendl;输入:2回车3回车输出:5用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束#include using namespace std;main ()char a20;cina;coutaendl;输入:jkljkljkl输出:jkljkljkl输入:jkljkl jkljkl /遇空格结束输出:jkljkl2、cin.get()用法1: cin.get(字符变量名)可以用来接收字符#include using namespace std;main ()char ch;ch=cin.get(); /或者cin.get(ch);coutchendl;输入:jljkljkl输出:j用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格#include using namespace std;main ()char a20;cin.get(a,20);coutaendl;输入:jkl jkl jkl输出:jkl jkl jkl输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)输出:abcdeabcdeabcdeabcd (接收19个字符+1个0)用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.这个我还不知道怎么用,知道的前辈请赐教;3、cin.getline() / 接受一个字符串,可以接收空格并输出#include using namespace std;main ()char m20;cin.getline(m,5);coutmendl;输入: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(mi,20)之类的用法:#include#includeusing namespace std;main ()char m320;for(int i=0;i3;i+)coutn请输入第i+1个字符串:endl;cin.getline(mi,20);coutendl;for(int j=0;j3;j+)cout输出mj的值:mjendl;请输入第1个字符串:kskr1请输入第2个字符串:kskr2请输入第3个字符串:kskr3输出m0的值:kskr1输出m1的值:kskr2输出m2的值:kskr34、getline() / 接受一个字符串,可以接收空格并输出,需包含“#include”#include #include using namespace std; void main(void) string st ; coutInput st:; getline(cin,st); coutstendl; 上面这段代码,如果输入abc,那么需要按两次回车键才能显示abc(在VC6中),因为getline有三个参数,第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入了,比如写成 getline(cin,st,s); 即使输入的是abcsabc 那么也只会显示 abc ,因此对于上面出现的情况,有人说getline默认情况下以回车(n)作为结束符,第一次按回车表示字符串结束,第二次按回车才开始输出。5、gets() / 接受一个字符串,可以接收空格并输出,需包含“#include”#include#includeusing namespace std;main ()char m20;gets(m); /不能写成m=gets();coutmendl;输入:jkljkljkl输出:jkljkljkl输入:jkl jkl jkl输出:jkl jkl jkl类似cin.getline()里面的一个例子,gets()同样可以用在多维数组里面:#include#includeusing namespace std;main ()char m320;for(int i=0;i3;i+)coutn请输入第i+1个字符串:endl;gets(mi);coutendl;for(int j=0;j3;j+)cout输出mj的值:mj也可以适用,原因是这里输入的没有空格,如果输入了空格,比如“ks kr jkl回车”那么cin就会已经接收到3个字符串,“ks,kr,jkl”;再如“kskr 1回车kskr 2回车”,那么则接收“kskr,1,kskr”;这不是我们所要的结果!而cin.getline()和gets()因为可以接收空格,所以不会产生这个错误;6、getchar() /接受一个字符,需包含“#include”#include#includeusing namespace std;main ()char ch;ch=getchar();coutch x;while (cin.fail()cin.clear();cin.sync();cout XXXXX x;5、Cin.clear() Cin.clear()用法如果输入发生错误发生,那么流状态既被标记为错误,你必须清除这些错误状态,以使你的程序能正确适当地继续运行。要清除错误状态,需使用clear()函数。此函数带一个参数,它是你将要设为当前状态的标志值,只要将ios:goodbit作为实参。复制内容到剪贴板 程序代码#include using namespace std;void main()int a;cout输入一个字母:a;/int型变量中放了char型数据,failbit置1coutcin.fail()=cin.fail()endl;/输出1cout输入一个数字:a;/故此处的输入无效coutaendl;/输出不确定值cin.clear();/此处用cin.clear()流标志复位coutcin.fail()=cin.fail()endl;/此处failbit已为0cout输入一个数字:a又把那个字符放入a中,流输入流又不能正常工作cina;coutaendl;/输出不确定值coutcin.fail()=cin.fail()endl;/在此处failbit又为1cin.clear();/再次修复输入流cin.ignore();/取走刚才流中的字符cout输入一个数字:a;couta=aendl;/现在再看一下输入流的failbitcoutcin.fail()=cin.fail()endl;/输出0,表明输入流已恢复正常6、cin.rdstate()这些当前的状态信息被包含在io_state类型的对象中。io_state是一个枚举类型(就像open_mode一样),以下便是它包含的值。 goodbit 无错误Eofbit 已到达文件尾failbit 非致命的输入/输出错误,可挽回badbit致命的输入/输出错误,无法挽回有两种方法可以获得输入/输出的状态信息。一种方法是通过调用rdstate()函数,它将返回当前状态的错误标记。例如,假如没有任何错误,则rdstate()会返回goodbit.下例示例,表示出了rdstate()的用法:复制内容到剪贴板 程序代码#include using namespace std;int main() int a;cina;coutcin.rdstate()endl;if(cin.rdstate() = ios:goodbit)cout输入数据的类型正确,无错误!endl;if(cin.rdstate() = ios_base:failbit)cout输入数据类型错误,非致命错误,可清除输入缓冲区挽回!endl;system(pause);另一种方法则是使用下面任何一个函数来检测相应的输入/输出状态:bool bad(); bool eof(); bool fail(); bool good(); 下例示例,表示出了上面各成员函数的用法:复制内容到剪贴板 程序代码#include using namespace std;int main()int a;cina;coutcin.rdstate()endl;if(cin.good()cout输入数据的类型正确,无错误!endl;if(cin.fail()cout输入数据类型错误,非致命错误,可清除输入缓冲区挽回!endl;system(pause);cin.peek() 将下一字节作为int值返回但不移出它我试了个例子#include using namespace std;int main(void)char ch, temp;wh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论