C++ 字符串输入

字符串输入

  • 面向单词

    • cin :

      • 输入出错时须使用cin.clear()取消异常状态才能继续读入缓冲区的内容,且不论正常与否始终不丢弃缓冲区中已输入的字符(包括换行符)
      • 使用空白(空格、制表符和换行符)来确定字符串的结束位置。
      • 自动添加空字符。
  • 面向行

    • cin.getline(m,n)

        • m 存储输入行的数组名称,n 为读取字符数。

        • 最多读取 n-1 个字符,自动添加空字符。

        • 换行符确定输入结尾,停止读取。
        • 不保存换行符,用空字符代替换行符。
        • 异常输入

          • 读到空行时将空串赋给原数组,不设置失效位,且丢弃行尾换行符。

          • 读取字符数 > n-1 时,原数组读取前 n-1 个字符且自动补上 '' ,并设置失效位,剩余字符及换行符 ' ' 仍保留在输入队列
    • 其实 cin.getline() 是成员函数,有三个参数:cin.getline(a, b, c) 
      cin.getline(char* ch, int num, char f);
      

        ch 和 num 的作用如上,而f 是结束字符。当提前遇到f ,输入结束,从输入流中读取并丢掉f 字符,自动向字符串结尾添加空字符。*若不指定结束符,则默认结束符是换行符。

    • cin.get(m,n)

        • 与 getline(m,n) 工作方式相同,但不再读取并丢弃换行符,而是将其留在输入队列中。

        • 异常输入

          • 读到空行时将空串赋给原数组,输入流中保留换行符,且设置失效位。恢复命令:cin.clear()。
          • 读入数据长度 > n-1 时,原数组读取前 n-1 个字符并自动加上 '' ,不设置失效位,剩余字符及换行符 ' ' 不被丢弃,保存在输入队列。
          • 较早的get(char *, int)版本在读取空行后,返回的值不为false。然而,对于这些版本来说,如果读取了一个空行,则字符串中第一个字符将是一个空字符。
原文地址:https://www.cnblogs.com/suui90/p/12566034.html