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

     

  • 相关阅读:
    23.课程应用接口
    22.课程页面设计
    21.手机接口
    20.云通讯
    19.JWT
    18.权限认证
    解决github下载慢的终极方法
    vs code 配置c/c++环境
    Python 字符编码处理总结
    Python编码
  • 原文地址:https://www.cnblogs.com/Eric-scratch-paper/p/5055569.html
Copyright © 2011-2022 走看看