• cin>>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char ch;
int count = 0;
cin >> ch;
while(ch != '#'){
++count;
cout << ch;
cin >> ch;
}
cout << endl << count << "Bytes character have been read!" << endl;
return 0;
}
理解:
cin >> char 的时候会不断从输入队列中取出字符
如果是空格(' ')是回车('\n') 就忽略, 并从输入队列中丢弃
如果是其它字符就读入char;
• cin.get(char)
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char ch;
int count = 0;
cin >> ch;
while(ch != '#'){
++count;
cout << ch;
cin >> ch;
}
cout << endl << count << "Bytes character have been read!" << endl;
return 0;
}
理解:
cin.get(char)的时候会不断从输入队列中取出字符读入char
所有字符都会从输入队列中取出, 并且会读入char(包括' ' 和 '\n');
• cin.get(char[], arrsize)
#include <iostream>
using namespace std;
int main(int argc, int argv[])
{
char buf[50];
cin.get(buf, 50);
cout << buf;
return 0;
}
理解:
cin.get(char[], arrSize)的时候会不断从输入队列中取出字符读入char[]
除了换行符, 其它字符会不断读入char[], 读到换行符或读入了(n-1)个字符的时候, 会把后面的字符至为'\0'(不一定是数组最后一个字符);
完整的输入过程:
♥ cin >> ch , cin.get(char), cin.get(char[], arrSize)发送请求I/O, 等待用户输入.
♥ 当输入了一串字符的时候, 这串字符是在输入缓存中的,
♥ 只有当用户键入换行符才会将字符串送入输入队列(换行符也在输入队列中).
♥ cin >> char, cin.get(char)都是从输入队列中取出一个字符读入char中,
♥ cin >> char, cin.get(char)读入char之后 结束.
♥ cin.get(char[], arrSize)从输入队列中不断取出字符读入char[]
区别: !!!
♦ cin >> char 会忽略空格和换行, cin.get(char)不会忽略任何字符.
♦ cin.get(char[], arrSize)不会忽略空格, 遇到回车就结束.