cin , cin.get() , cin.getline() , getline() , cin.ignore() 的用法

本文详细介绍了C++中几种常见的字符输入方法,包括cin、cin.get()、cin.getline()、getline()及cin.ignore()等函数的应用场景和注意事项。通过具体实例展示了如何正确使用这些函数进行字符输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:http://blog.youkuaiyun.com/dpdldh/article/details/6154220

最近在搞ACM,所以学了一些基本的C++操作。但是发现C++对于字符的操作不像C那么简单。例如,对缓冲区回车符的过滤,string类型的输入等等小问题。所以,笔者通过一些小小的实践,验证了几个常用方法,贴出来献丑~~

(所有程序均在CodeBlock下调试通过)

  

cin

这个就不多说了,只说它像gets一样,可以过滤掉回车;

例如:

[cpp]  view plain copy
  1. #include <iostream>  
  2. #include <cstdio>  
  3. using namespace std;  
  4. int main ()  
  5. {  
  6.     char a, b;  
  7.     cin >> a >> b;  
  8.     cout << a << " " << b << endl;  
  9.     return 0;  
  10. }  

输入:a   (回车)

          b

输出: a b

 

把cin改成scanf,则不一样了:

 

[cpp]  view plain copy
  1. #include <iostream>  
  2. #include <cstdio>  
  3. using namespace std;  
  4. int main ()  
  5. {  
  6.     char a, b;  
  7.     scanf("%c%c",&a,&b);  
  8.     printf("%c %c/n",a,b);      
  9.     return 0;  
  10. }  

输入:a  (回车)

 b

输出:a

 

说明,scanf无法过滤掉回车;回车符在缓冲区里,被b接收了

 

 

 

 

 

cin.get()   

参数: cin.get(char c)                 //接受一个字符

          cin.get(char* str, int n)     //接受指定个数的字符串(不可接受string类型)

头文件:  <iostram>

例子1:

[cpp]  view plain copy
  1. #include <iostream>  
  2. using namespace std;  
  3. int main(void)  
  4. {     
  5.         char a;  
  6.     cin.get(a);  
  7.         cout << a << endl;  
  8.         return 0;  
  9. }  

输入: 123456

输出:1

 

例子2:

[cpp]  view plain copy
  1. #include <iostream>  
  2. using namespace std;  
  3. int main(void)  
  4. {     
  5.     char str[20];  
  6.     cin.get(str,19);    //19是允许读取的最大字符个数  
  7.      cout << str << endl;  
  8.     return 0;  
  9. }  

输入:123 456 567   (中间两个空格)

输出:123 456 567

 

注意:cin.get()接受字符串时,可以接受空格,tab;遇到回车结束输入

更多用法请参考:  http://www.cplusplus.com/reference/iostream/istream/get/

 

 

 

cin.getline()   

参数: cin.getline(char* str, int n)       //接受指定长度的字符串,可接受空格,tab;遇到回车结束;不可输入string类型

头文件: <iostream>

例子:

 

输入:abcde

      12345

输出:abcde

      12345

 

更多用法请参考:  http://www.cplusplus.com/reference/iostream/istream/getline/

 

 

 

getline()

参数:getline(istream a, string str)             //接受一个string类型字符串,可以接收空格并输出

头文件: <string>

例子:

 

[cpp]  view plain copy
  1. #include <iostream>  
  2. #include <string>  
  3. using namespace std;  
  4. int main ()   
  5. {  
  6.     string str;  
  7.     getline (cin,str);  
  8.     cout << str << "./n";  
  9. }  

 

 

输入:sdfsdf 234

输出:sdfsdf 234

 

更多内容,请参考:http://www.cplusplus.com/reference/string/getline/

 

 

 

 

cin.ignore()

参数:istream&  ignore ( streamsize n = 1, int delim = EOF )

头文件: <iostream>

用法:忽略指定长度字符,或者忽略指定字符;若不加参数,则默认忽略空格或换行

例子:

[cpp]  view plain copy
  1. #include <iostream>  
  2. #include <cstdio>  
  3. #include <string>  
  4. using namespace std;  
  5. int main ()  
  6. {  
  7.     string num, str;  
  8.   
  9.     cin >> str;  
  10.     //cin.ignore();  
  11.     getline(cin,num);  
  12.     cout << str << endl << num << endl;  
  13.     return 0;  
  14. }  

输入: 1223  (回车)

输出: 1223

若把注释去掉,用上cin.ignore()。则:

输入:1234 6789

输出:1234

         6789

说明,把回车给过滤掉了

 

 

http://www.cplusplus.com/reference/iostream/istream/ignore/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值