初尝C++

本文详细介绍了C++编程中cin输入时遇到的常见问题,如getline()和get()函数的使用,输入数字后输入字符导致的问题解决方法,以及如何正确数输入了多少单词。通过实例代码和解释,提供了具体的解决策略。

    C语言也就是及其马马虎虎,就转到了C++上,一直看着《C++ primer plus》来学习。

    跟着书抄代码实现、看着题目编代码实现,遇到过不少卡壳,也有些小小知识记了下来,有些可能依然没有找到答案,只是记下暂时的解决方法,待以后慢慢琢磨,有些或许算是解决了吧~~

    最近在C++编程中总是会遇到有些纠结的就是cin了,在“小知识.txt”记录的如下:

  1.cin输入:

    getline()和get()可以读取带有空格的输入,直到换行符,前一个丢弃换行符,后一个保留在输入序列中:cin.getline(name,20),读取长度最大为19;
    cin读取到空格或回车都结束,cin的读取将忽略空格和换行符,不输出,丢弃空格,换行符留在缓冲队列;
    cin.get(name,20).get(),后一个用于读取最后的换行符;
    用于string读取值:cin或者getline(cin,str1),读取string的长度:str1.size();
    计算读取了多少单词,可以判断while( cin >> word ): cin会省略空格和换行,每次读取到空格或者换行,即每次读取为一个单词,读取一次返回一个1;

  2.定义int型,输入数字后又输入字符,有可能会出现问题:(现在也没掌握具体会发生的情况)
    if(cin.good()) //判断cin流是否正确
    {
      break;
    }
    else //cin流错误
    {
      cin.clear(); //把流重置为正常状态,但缓冲中还存在之前的输入
      cin.ignore(); //忽略缓冲里面的字符
      cout<<"输入错误的字符,请重新输入:";
      cin>>i;
    }

    可能有点乱,不过大体上比较纠结的是要读取两个变量,一个是int,一个是char,当这种情况连续输入时,前一个输入的换行符有时就是个问题,需要cin.get()或者cin.ignore();

    网上有不少类似的问题,但总觉着这样的cin.get或者ignore都是暂时的解决方法......

    不过cin的到空格结束似乎还是有不少方便,想数输入了多少单词,直接 while(cin >> word) count++; 就行了。继续看c++ primer plus!

转载于:https://www.cnblogs.com/heyuheitong/archive/2012/10/22/2734512.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值