标准输入流
- 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 == '\n') { 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 == '\n') { 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; }
结果: