浅谈C++的几种从键盘输入方式
我们都知道,C++可以从键盘来读取输入,读取输入的方式也有好多种,下面我们来介绍常见的几种方式 和他们的不同之处 1、cin 使用cin输入时,程序将输入视为一系列字节。每个字节都被解释为字符编码。不管数据类型是什么,输入一开始都是字符数据,然后cin对象负责将数据转换成其他类型 例如 string name; std::cin>>name; std::cout< 当你输入Michael Jackon时,通运行程序你会发现name只存储了Michael,这是为什么呢? 原来是 cin使用空白(空格,制表符和换行符)来确定字符串的结束位置 在读取字符数组时,cin将只会读取第一个单词,cin将该字符串放到数组中,并自动添加空字符 Michael Jackon 之间的空格被当作结束符了,而Jackon被继续留在输入队列中,直到下一次读取输入 如何来解决这种问题呢,请继续往下看 2、getline() getline()函数用于读取整行,通过回车键来确定输入的结尾 假如你还是要读取MIchael Jackon String name; getline(cin,name); std::cout< 或者你可以用char数组 char name[50]; std::cin.getline(name,50); std::cout< 这是你就会发现读取的是Michael Jackon了 getline虽然通过读取换行符来读取结尾,但是它并不保存换行符,保存字符串是,他会用空字符来代替换行符 getline读取完一行时,会从下一行开始读,也就是说我们可以跳过某一行 假设我们读取文本文件时,不读取某一行,我们可以这样做 string str; getline(cin,str); 这样便跳过这一行了 3、get() Istream中有一个名为get()的变体,他的工作方式和getline()类似。他们接受参数相同,解释参数的方式也相同,并且都读取到行尾。的韩式get()读取到行尾时不丢弃换行符,而是将它留在输入队列中 cin.get(name,50); cin.get(dessert,50); 假设读取了一个字符串,再读取时,读取到的便是换行符了,get()便认为已经到达行尾了,不在读取 怎么解决呢? 我们可以在两次读取之间加一个cin.get();用来读取下一个字符,即使是换行符。 cin.get(name,50); cin.get(); cin.get(dessert,50) 以上这篇浅谈C++的几种从键盘输入方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程之家。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 基于DDD的现代ASP.NET开发框架--ABP系列之17、AB
- postgresql – java – 当数据库中发生某些事情时
- flash – 在Node.js上传二进制文件
- Ruby:为什么nil.to_s返回“”,但是nil.inspect返
- FPGA设计规范
- 从DFSOutputStream的pipeline写机制到Streamer线
- ruby-on-rails – Ruby(库)中XML和JSON的对象序列
- ruby-on-rails – 在Rake中组合多个任务时清理任
- ruby-on-rails – Rspec Capybara – 它没有任何
- c# – 如何在没有互操作程序集的情况下将任何文件