cin输入后循环读取输入字符,为什么可以一个一个读取小弟我输入的字符

cin输入后循环读取输入字符,为什么可以一个一个读取我输入的字符?
不是应该在用cin赋值的时候被输入后产生的最后的/0覆盖之前的值么?为什么会一个一个读取?求解释~
#include <iostream>
using namespace std;

int main(){
cout << "enter characters;enter # to quit:\n";
char ch;
int count=0;
cin>>ch;
while (ch != '#')
{
cout <<ch;
++count;
cin >>ch;

}
cout <<endl<<count <<"characters read\n";

system("pause");
return 0;
}
------解决思路----------------------
c++ 的cin会把空格当成输入的结束
------解决思路----------------------
字符串才有\0,单独的char没有,所有的输入其实都是一个个字符,包括空格回车换行
------解决思路----------------------
搜“键盘缓冲区”