《C++ Primer Plus(第六版)》 P124 第8题

#include <iostream>

using namespace std;

 

struct Pizza {

    char brand[20]; 

     float diameter;

     int weight;

};

 

 

int main(){

   Pizza *pizza = new Pizza;

   cout << "Your company's name: ";

   cin.get(pizza->brand,20);

   cout << "Please input the diameter of pizza: ";

   cin >> pizza->diameter;

//   cin.get(); 

   cout << "the weight: " ;

   cin >> pizza->weight;

   cout << "Company: " << pizza->brand << endl

       << "Diameter: " << pizza->diameter <<endl

       << "Weight: " <<pizza->weight <<endl;

   delete pizza;

   return 0;

}

如果先输入公司的名字的话,可以顺利完成。

但是,如果我先输入直径,然后回车想输入公司名字的时候发现,命令框直接闪退了。

然后把cin.get()的注释去掉,就可以了。

书上专门讨论过getline和get的区别:

这两个函数都读取一行输入,直到到达换行符。然后getline()将丢弃换行符,而get()将换行符保留在输入序列中

这里的输入序列是指“输入队列”,比如你两次调用cin.get(name,size),那么第二次调用的时候看到的第一个字符就是换行符。在本例中,getline和get是等价的。

我在输入完成直径以后,敲回车键,所以在输入队列中就有了回车键,然后get或者getline读取,发现回车键,所以就没办法完成输入了,也就是说cin是把回车键留在队列中的。

cin.get(),不加任何参数可以读取下一个字符(即使是换行符)。

关于cin.getline和cin.get的更多相关文章

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

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

  2. C++中cin.getline与cin.get要注意的地方

    cin.getline与cin.get的区别是,cin.getline不会将结束符或者换行符残留在输入缓冲区中.

  3. c++中 cin、cin.get()、cin.getline()、cin.getchar()的区别

    ①cin>>:无法接收空格.Tap键且以空格.Tap键.回车符为分隔符: ②cin.get( ):可以接收空格.Tap键且以回车符为结束符: 一:可输入单个字符 格式: char ch; ...

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

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

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

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

  6. 关于符号匹配题的一些思考过程--含cin.getline()函数的一些基本原理

    刚刚拿到题目的时候,还没啥感觉,就是觉得要用到if--else就可以了,但是一联想到现在是在学栈,那么是不是要用到栈呢? 一.那么先看看题目吧 给定一串字符,不超过100个字符,可能包括括号.数字.字 ...

  7. getchar()、putchar()、gets()、puts()、cin.get()、cin.getline()、getline()

    1.getchar: 原型为int getchar(void). 它从stdin里读取一个字符.返回值为用户输入的ASCⅡ码,出错返回-1. eg:c=getchar(). 2.putchar: 原型 ...

  8. cin.get()和cin.getline()之间的区别

    cin.getline()和cin.get()都是对输入的面向行的读取,即一次读取整行而不是单个数字或字符,但是二者有一定的区别. cin.get()每次读取一整行并把由Enter键生成的换行符留在输 ...

  9. string中getline,cin的方法getline(),get总结

    一.string中的getline不是string的成员函数,属于全局函数,使用需要include<string>,有两个重载版本: 函数原型参见:http://www.cplusplus ...

随机推荐

  1. 修改win7锁定界面背景

    Regedit HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Authentication/LogonUI/Backgrou ...

  2. Django中的Form表单

    Django中已经定义好了form类,可以很容易的使用Django生成一个表单. 一.利用Django生成一个表单: 1.在应用下创建一个forms文件,用于存放form表单.然后在forms中实例华 ...

  3. shell脚本学习(五)

    1.统计文件的行数.单词数.字符数 1)行数: wc -l file cat file | wc -l 2)单词数 wc -w file cat file | wc -w 3)统计字符数 wc -c ...

  4. 为什么推荐Zookeeper作注册中心

    Zookeeper的数据模型很简单,有一系列被称为ZNode的数据节点组成,与传统的磁盘文件系统不同的是,zk将全量数据存储在内存中,可谓是高性能,而且支持集群,可谓高可用,另外支持事件监听.这些特点 ...

  5. HttpServletRequest对象(一)

    一:HttpServletRequest介绍: 代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中, 二:Request常用的方法 1):获得客户端信 ...

  6. Smarty自定义函数

    自定义函数:<{方法名称}> 在html页面是可以直接赋值的:(没啥作用只是知道即可) <{$a = "hello"}><div><{$a ...

  7. php字符操作

    //一:定义字符串的方法 //1.双引号 //2.单引号 //3.heredoc语法结构 //heredoc语法定义字符串 $str=<<<TAG 我的武功终成武林盟主TAG;//注 ...

  8. UIScrollView 加载多个view view还可以交换顺序(1)

    #import "ViewController.h" #define kWidthOfScreen self.view.frame.size.width #define kHeig ...

  9. Ubuntu11.10 E: Unable to locate package ubuntu-restricted-extras

    最近在ubuntu11.10下安装支持多媒体播放的插件时遇到一些问题,在此小记一下. 首先是ubuntu11.10的安装,基本上是一键安装,在此不细说. 1.此版本和以前使用的ubuntu版本风格不太 ...

  10. ssh连接ubuntu提示连接不上的问题

    今天在自己的电脑上安装了最新版本的 ubuntu (我都在root用户下运行,非root用户请添加sudo命令) uname -rvo 运行结果为 3.13.0-32-generic #57-Ubun ...