cin的返回值 | C++ | 牛客华为机试题

  • 题目详情

计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
输入描述
输入一行,代表要计算的字符串,非空,长度小于5000。
输出描述
输出一个整数,表示输入字符串最后一个单词的长度。

  • 代码
#include<bits/stdc++.h>

using namespace std;

int main() {
    string s;
    while(cin >> s);
    cout << s.size();
    return 0;
}
  • 输入流istream如何控制输入的?
    为什么可以使用while(cin >> s)进行输入咧?
    关键在流提取符>>从流中提取数据时跳过输入流中的空格、tab键、换行符等空白字符。遇到EOF时才跳出while循环。
    因为>>会跳过空白符,string s对象每次接收到的都是一个单词(一整个字符串中的每个单词被用空格间隔开来)。
    查看std下的ios中有
        operator void *() const {
            if(state&(badbit|failbit) )
                return 0;
            return (void* )this;
        }
    
    解读上述代码就是,当输入的字符或者对象是有效的goodbit时,返回当前的对象首地址,如果“出错”了(例如字符对象遇到了数字,或者遇到了EOF),对应的输入流状态变成了badbitfailbit此时返回0
    🌻Knowledge is Power
    cin是一个istream类型对象,无返回值❗️
    他能作为判断语句的原因是istream类型中的>>操作符会返回一个istream对象(cin)
    如果>>读到EOF那么返回的istream对象(cin)中会检测到EOF的存在
    此时std下的operator bool()转换函数起作用
    将istream对象(cin)转换成bool类型false作为条件判断,以此结束输入。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值