int main(){

    string input;
vector<string> arr; while(cin >> input)
{
cout << "start"<<endl;
arr.push_back(input);
} cout << arr[arr.size()-1].length() <<endl;
return 0;
}

输入 has map 得到的结果是出现了两次start打印。这是为什么?

输入了\n的时候发生了什么? 实际上,cin的原理是将输入的内容放入缓冲区,每当遇到\n后,将缓冲区内容输入至程序。即,输入\n后,cin>>input会正式执行。

由于input的类型是string, 所以 cin会跳过空格类的字符。于是while循环体执行了两次循环,分别将has 和 map两个字符串输入至input中。

而如果没有while循环的话cin只会执行向input中输入遇到的第一个字符串,便会结束,所以会用到while(cin >> input)

while(cin >> input)遇到\n的时候实际上cin >> input就会执行,将缓冲区的所有字符串循环放入input中,然后执行循环体中的指令,执行完毕后重新回到循环体开头,等待下一次从键盘中输入的内容。

如果想终止循环体,则输入Ctrl+D。

所以求题目字符串最后一个单词的长度,可以直接用以下的代码完成:

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(){ string input;
vector<string> arr;
while(cin >> input)
{
arr.push_back(input);
}
cout << arr[arr.size()-1].length() <<endl;
return 0;
}

C++ cin和while cin的更多相关文章

  1. [原创]cin、cin.get()、cin.getline()、getline()、gets()、getchar()的区别

    这几个输入函数经常搞不清具体特点和用法,这里稍作总结 一.cin>> 1.最基本用法,输入一个变量值 2.输入字符串,遇“空格”.“TAB”.“回车”结束,比如输入“hello world ...

  2. C++中关于cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

    1.cin>> 用法1:最基本,也是最常用的用法,输入一个数字: 注意:>> 是会过滤掉不可见的字符(如 空格 回车,TAB 等) cin>>noskipws> ...

  3. C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法----细节决定成败 (sort用法)

    C++中cin.cin.get().cin.getline().getline().gets()等函数的用法 学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有 ...

  4. C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

    学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1.cin 2.cin.get ...

  5. cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

    学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息:1.cin1 ...

  6. 关于if (!cin)以及while (cin >> word)

    首先注意: 1.每一个输入(输出)对象就代表一个输入(输出)流: 2.输入(输出)对象中的流状态成员标记了输入(输出)流当前的状况,当eofbit.badbit.failbit三个标记位均为0时表示流 ...

  7. [转载]cin、cin.get()、cin.getline()、getline()、gets()函数的用法

    1.cin>>           用法1:最基本,也是最常用的用法,输入一个数字: #include <iostream>using namespace std;main ( ...

  8. (转)cin、cin.get()、cin.getline()、getline()、gets()等函数的用法

    学C++的时候,这几个输入函数弄的有点迷糊:这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息:1.cin1 ...

  9. cin详解(cin.get()、cin.getline()、cin.clear()、cin.sync())

    在C中,输入输出用scanf和printf,在输入数据的同时还需说明数据的类型,如果输入数据较多,那就很麻烦,而C++中也有相似的东西cin和cout,它们来自C++的一个名叫" iostr ...

  10. C++中几个输入函数的用法和区别(cin、cin.get()、cin.getline()、getline()、gets()、getchar())

    1.cin>> 用法1:最基本,也是最常用的用法,输入一个数字: #include <iostream>using namespace std;main (){int a,b; ...

随机推荐

  1. Mysql - You can't specify target table '表名' for update in FROM clause 错误解决办法

    背景 在MySQL中,写SQL语句的时候 ,可能会遇到 You can't specify target table '表名' for update in FROM clause 这样的错误 错误含义 ...

  2. uni-app 登录Abp VNexe并获取Token

    uni.request方式登录abp关键代码如下,因abp获取token需要用formdata方式请求所以需要加上请求头 const baseUrl = 'http://127.0.0.1:44323 ...

  3. 【redis前传】集思广益之quicklist,取其精华去其糟粕

    前言 在之前我们已经学习了redis五大数据结构中的list结构.其内部是linkedList和zipList两种结构.这是我们已经学习的内容.之前我没有结合操作具体查看.事实上在两者中还存在一种结合 ...

  4. 如何画UML,几种简单的模型分析

    如何画UML 前言 UML 类 类的关系 1.依赖关系 2.继承关系 3.实现关系 4.关联关系 5.聚合关系 6.组合关系 总结 参考 如何画UML 前言 最近在学习设计模式,其中不免涉及到 UML ...

  5. mysql 选取操作日志(mysql-bin.0000恢复数据)

    my.ini 配置log-bin=mysql-bin 启用日志 用  mysql-bin.0000 mysqlbinlog -d keyboard ../data/mysql-bin.000024 – ...

  6. 手机访问pc网站自动跳转手机端网站PHP代码

    $agent = $_SERVER['HTTP_USER_AGENT']; if(strpos($agent,"comFront") strpos($agent,"iPh ...

  7. Jmeter系列(30)- 性能指标(3) | 性能指标峰值

    性能指标峰值 简述 彻底理解了性能指标(1)(2)的内容,这一篇随笔其实就不用看了,而且大家也能猜到这一篇内容是啥:二八原则 性能指标不要硬性的往那些性能指标上去靠,要根据业务来,熟悉业务,明白了解你 ...

  8. jmeter5.2版本 配置元件之逻辑控制器详解

    1.简单控制器(Simple Controller) 作用:将多个请求放置在一起,但是没有逻辑上的操作,进行一个简单的分组,一般是由于分组后的请求需要进行统一的某个操作或者存在共同的因素.在简单控制器 ...

  9. Laravel [1045] Access denied for user 'homestead'@'localhost' .env没有配置

    laravel 连接数据库出现错误 PDOException in Connector.php line 55:SQLSTATE[HY000] [1045] Access denied for use ...

  10. Ajax与Gson

    1. ajax的底层操作方法: 代码get请求  Get请求 2. Post请求 $("#chufa").click(function () { var val = $(" ...