C/C++基础----cin>> 和 cin.get(char) 和 cin.get(char[], arrSize);

• 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)不会忽略空格, 遇到回车就结束.

  

posted @ 2018-03-18 09:47  Jacky_Peng  阅读(222)  评论(0)    收藏  举报