码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 输入

时间:2015-12-17 23:58:37      阅读:394      评论:0      收藏:0      [点我收藏+]

标签:

· cin:

  使用空白(空格,制表符和换行符)来定字符串的界,这意味着cin在获取字符数组输入时只读取一个单词,读取该单词后,cin将该字符串放到数组中,并自动在结尾添加空字符。

面向行输入:

· getline()

  读取整行,通过回车键输入的换行符来确定输入结尾;调用:cin.getline(name,20) 表示将一行的前19个字符(最后一个为字符串结束符)读入name数组中

· get()

  get()有一种变体的工作方式和getline很类似,它们接受的参数相同,解析参数的方式也相同,并且都能读到行尾,但get并不再读取并丢弃换行符,而是将其留在输入队列中。

  假设我们连续调用两次get:

cin.get(name, ArSize);
cin.get(dessert,ArSize);

  由于第一次调用后,换行符将留在输入队列中,因此第二次调用时看到的第一个字符便是换行符。因此get()会认为已经达到结尾,而没有发现任何可读的内容。如果不借助于帮助,get()将不能挎过该换行符。幸运的是,get还有另外一种变体。使用不带任何参数的cin.get()调用可读取下一个字符(即使是换行符)因此可以使用它来处理换行符。

cin.get(name, ArSize); // read first line
cin.get();                     // read newline
cin.get(dessert,ArSize);// read second line
//另外一种使用get的方式是将两个类成员函数拼接起来,如下:
cin.get(name, ArSize).get();// concatenate member functions

· 输入空行和其他问题

  当get()(不是getline())读取空行后将设置失效为(failbit)。这意味着接下来的输入将被阻断,但可以用下面的命令来恢复输入:

cin.clear();

  另一个潜在的问题是,输入字符串可能比分配的空间长。如果输入行包含的字符数比制定的多,则getline()和get()将把余下的字符留在输入队列中,而getline()还会设置失效位,将关闭后面的输入。

 

 

c++ 输入

标签:

原文地址:http://www.cnblogs.com/Eric-scratch-paper/p/5055569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!