cin获取键盘输入对于空格 换行符的处理

当个笔记,以便回过头来看看。

空字符与空白
空字符用"\0"表示,在内存中不为空,且不可以被打印出来,以"\0"的形式储存在变量或数组中,字符长度为0,所对应的ASCII码值为  0。
空白是由空格输入的字符长度为1的字符。被打印出来的时候显示为一格空白。

标准书输入区:
      这是一个键盘输入与编译器读取之间的一个缓冲区,编译器并不是直接读取我们在键盘上输入的信息,而是从输入缓冲区中读取信息。
        当我们完成字符串输入之后,需要敲击回车将字符串送入到缓冲区,那么敲击的这个回车键(\r)会被转换为一个换行符(\n),这个换行符也会被送入缓冲区,在缓冲区中被当作一个字符来计算。比如 我们输入 "123 456" 敲击一下回车,被送入到缓冲区的字符就是 8 个 "123 456\n"。
        cin是一个类成员函数,通过流抽取符 >> 从输入缓冲区中抽取数据,在读取成功之前,cin会将读取到的空格,换行符, TAB等分隔符忽略并清楚,然后继续读取直到读取成功,读取成功后在遇到分隔符,会在此确定字符串的结束位置。并将分隔符保留在缓存区中,等待被下一个cin清除或被其他函数读取后丢弃。
比如 cin >> a >> b;
键盘输入  123空格456空格9  然后敲回车
此时  123储存进入  a 中,  456储存进入b中,  第一个空格被清除,第二个空格和字符9以及敲击回车所留下的换行符  这三个字符会被留在缓存区中。
如果此时有个getline函数去从缓冲区中读取数据,它会读取走空格和字符9,然后读取到换行符,确定字符串在此处结尾,然后用空字符替换掉换行符,并将这个空字符储存在字符串末尾

你可能感兴趣的:(c++)