标准输入流

标准输入流

  • cin.get 缓冲区中读取一个字符
  • cin.get(两个参数) 不读换行符
  • cin.getline () 读取换行 并且扔掉
  • cin.ignore 忽略 (N) N代表忽略字符数
  • cin.peek 偷窥   偷看1个字符然后放回去
  • cin.putback  放回 把字符放回缓冲区

cin.get 缓冲区中读取一个字符

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
/* 标准输入流
cin.get() //一次只能读取一个字符
cin.get(一个参数) //读一个字符
cin.get(两个参数) //可以读字符串
cin.getline()
cin.ignore()
cin.peek()
cin.putback()
*/

void test01()
{
    char c = cin.get();     //一次只接收一个字符 如果输入的是as 第一次拿 a 第二次 s 第三次 换行 第四次 等待
    cout << "c= " << c << endl; //a

    c = cin.get();     //
    cout << "c= " << c << endl;     //s
    c = cin.get();     //
    cout << "c= " << c << endl;     //换行符
    c = cin.get();     //
    cout << "c= " << c << endl;     //等待下一次输入
}

int main()
{
    test01();
    system("Pause");
    return 0;
}

结果:

cin.get(两个参数) 不读换行符

void test02()
{
    //cin.get(两个字符); //可以读字符串, 但不会读取换行符
    char buf[1024]; //字符数组大小
    cin.get(buf, 1024);     //不取走换行

    cout << buf << endl;

    char c = cin.get();
    if (c == '
')
    {
        cout << "换行还在缓冲区" << endl;
    }
    else {
        cout << "换行不在缓冲区" << endl;
    }
}

结果:

cin.getline () 读取换行 并且扔掉

void test03()
{
    //cin.getline()  //把换行符读取 并且扔掉
    char buf[1024]; //字符数组大小
    cin.getline(buf, 1024);     //

    cout << buf << endl;

    char c = cin.get();         //如果读取不到 则会停留 等待输入
    if (c == '
')
    {
        cout << "换行还在缓冲区" << endl;
    }
    else {
        cout << "换行不在缓冲区" << endl;
    }
}

结果:

cin.ignore 忽略 (N) N代表忽略字符数

void test04()
{
    //cin.ignore()   //不加参数 忽略一个字符 ,有参数N 代表忽略N个字符
    cin.ignore(2);
    char buf[1024];
    cin.get(buf, 1024);
    cout << "buf= " << buf << endl;
}

结果:

cin.peek 偷窥   偷看1个字符然后放回去

void test05()
{
    //cin.peek()   //偷窥 偷看一眼 再放回缓冲区 该字符没有被获取 还在缓冲区
    char c = cin.peek();
    cout << "c = " << c << endl;

    c = cin.get();
    cout << "c = " << c << endl;
}

结果:

cin.putback  放回 把字符放回缓冲区

void test06()
{
    //cin.putback();    //放回
    char c = cin.get();
    cin.putback(c);

    char buf[1024];
    cin.getline(buf, 1024);

    cout << buf << endl;
}

结果:

原文地址:https://www.cnblogs.com/yifengs/p/15185179.html