C++ 中如何结束 while (cin>>str) 的输入

 更新时间:2022年07月25日 10:49:16   作者:止步听风  
这篇文章主要介绍了C++ 中如何结束 while (cin>>str) 的输入,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

如何结束 while (cin>>str) 的输入

cin

当从键盘上进行输入并按下回车时,输入的字符就会被送到输入缓冲区进行存储,且以空白字符为分隔符。

window 下

如果本行存在输入字符的情况下,在行尾加 ctrl+z 并且回车之后并不会结束输入,而是将 ctrl+z 当作一个字符来解释,将该字符当作普通字符缓冲并输出。

要结束输入需要在新行(即输入完成之后回车到新行)之后,输入 ctrl+z 并回车结束输入。

linux 下

在新行开头,输入ctrl+d,即为 EOF,此时输入结束。

在行尾结束输入 ctrl+d 则表示输出输入缓存区的数据,此时再次输入 ctrl+d 就代表 EOF,从而结束输入。

while(cin>>str);auto;find();

while(cin>>str);auto;find();

想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。

每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i 件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。输出一行一个数字表示完成所有料理需要多少种不同的材料。

举例:BUTTER FLOUR HONEY FLOUR EGG 输出:4

方法一SET

#include <iostream>
 #include <set>
 #include <string>
 using namespace std;
 int main() {
 string str;
 set<string> datas;
 //输入流结束的条件就是:^z 之前不能有任何字符输入(回车除外),否则 ^z 起不到流结束的作用。 
 while (cin >> str) {
 datas.insert(str);
 }
 cout << datas.size() << endl;
 return 0;
 }

方法二VECTOR

#include <iostream>
 #include <vector>
 #include <string>
 #include <algorithm>
 using namespace std;
 int main(){
 string food;
 vector<string> Vec;
 int count = 0;
 while(cin>>food){
 //Dev-C++ 5.4.0中的auto 工具——编辑选项——程序——g++修改成g++ -std=c++11
 auto  it = find(Vec.begin(),Vec.end(),food);
 if (it == Vec.end())
 Vec.push_back(food);
 }
 cout<<Vec.size()<<endl;
 return 0;
 }

学习总结

问题一:Vector和Set的区别 

首先:Vector是数组,set是一个集合,内部的元素不会重复,同时它会自动进行排序,也是从小到大; 

其次:由于存储结构不同,vector擅长于解决某个位置是什么值的问题,而set擅长于解决,某个元素在那个位置的问题,知道元素的内容,

查找它的位置。因此vector特别好的支持随机访问,而set不支持(不支持下标访问)

问题二:find() 返回符合搜索条件的字符区的第一个字符的索引,没找到目标就返回npos。

if(str.find("jia")==string::npos),没找到==后必有

第二个参数:(可有可无)指出string内的搜索起点的索引

第三个参数:(可有可无)指出搜出的字符个数 

问题三:auto在 Dev-C++ 5.4.0的使用

问题四:while(cin>>str)的使用 windows中 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解C++如何实现在Word文档中创建列表

    详解C++如何实现在Word文档中创建列表

    这篇文章主要为大家详细介绍了介绍如何使用C++在Word文档中创建编号列表、项目符号列表和多级列表,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-05-05
  • C++类与对象深入之构造函数与析构函数详解

    C++类与对象深入之构造函数与析构函数详解

    朋友们好,这篇播客我们继续C++的初阶学习,现在对我们对C++非常重要的一个知识点做出总结,整理出来一篇博客供我们一起复习和学习,如果文章中有理解不当的地方,还希望朋友们在评论区指出,我们相互学习,共同进步
    2022-06-06
  • C/C++实现的MD5哈希校验的示例代码

    C/C++实现的MD5哈希校验的示例代码

    MD5算法是一种广泛使用的 Hash 算法,常用于确保信息传输的完整性与一致性,本文主要介绍了C/C++实现的MD5哈希校验的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • C语言中的strdup()函数和其与strcpy()函数的区别

    C语言中的strdup()函数和其与strcpy()函数的区别

    这篇文章主要介绍了C语言中的strdup()函数和其与strcpy()函数的区别,同样用于拷贝字符串的两个函数的异同值得注意,需要的朋友可以参考下
    2015-08-08
  • C语言通过三步翻转法实现单词倒置详解

    C语言通过三步翻转法实现单词倒置详解

    这篇文章主要为大家分享了用三步翻转法将一句话的单词进行倒置的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-05-05
  • 队列的动态链式存储实现代码分享

    队列的动态链式存储实现代码分享

    DynaLnkQueue.cpp - 动态链式队列,即队列的动态链式存储实现
    2014-02-02
  • 使用OpenGL创建窗口的示例详解

    使用OpenGL创建窗口的示例详解

    OpenGL,也就是Open Graphics Library。其主要就是用于我们去渲染2D、3D矢量图形的一种跨语言、跨平台的应用程序编程接口,这篇文章主要介绍了使用OpenGL创建窗口,需要的朋友可以参考下
    2022-04-04
  • C++实现中值滤波的示例代码

    C++实现中值滤波的示例代码

    本文主要介绍了C++实现中值滤波的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • c语言判断是否素数程序代码

    c语言判断是否素数程序代码

    这篇文章主要介绍了c语言判断是否素数的方法和问题,大家参考使用吧
    2013-11-11
  • C++遍历文件夹下文件的方法

    C++遍历文件夹下文件的方法

    这篇文章主要介绍了C++遍历文件夹下文件的方法,实例分析了C++针对文件夹遍历的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07

最新评论