zoukankan      html  css  js  c++  java
  • c++ 输入

    · 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()还会设置失效位,将关闭后面的输入。

     

  • 相关阅读:
    logback不输出日志消息,且SLF4J绑定源错误
    solr6.4.1 搜索引擎(1)启动eclipse启动
    centos7网络连接
    OutOfMemoryError异常java内存泄漏(Memory Leak)和内存溢出(Memory Overflow)
    centos7软件安装redis3.2
    centos7软件安装mysql5.7
    solr6.4.1搜索引擎(5)使用zookeeper3.4.9分布式集群
    mysql优化数据库优化、SQL优化
    solr6.4.1搜索引擎(4)tomcat重启后数据加载缓慢或丢失
    centos7软件安装jdk1.8
  • 原文地址:https://www.cnblogs.com/Eric-scratch-paper/p/5055569.html
Copyright © 2011-2022 走看看