#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()
{//cin.get()一次只能讀取一個字符// a s char c = cin.get();//第一次輸出 acout << "c = " << c << endl;c = cin.get();//第二次輸出 scout << "c = " << c << endl;c = cin.get();//第三次輸出 換行cout << "c = " << c << endl;c = cin.get();//第四次 等待下一次輸入cout << "c = " << c << endl;}void test02()
{//cin.get(兩個參數) //可以讀字符串char buf[1024] = { 0 };cin.get(buf, 1024); //當利用cin.get讀取字符串時候,并不會讀走換行符,而是遺留在緩沖區中char c = cin.get(); if (c == '\n'){cout << "換行符遺留在緩沖區了" << endl;}else{cout << "換行符不在緩沖區了" << endl;}cout << "buf = " << buf << endl;}void test03()
{char buf[1024] = { 0 };cin.getline(buf, 1024);//如果利用cin.getline()讀取字符串,函數并不會讀取換行符,而是將換行符從緩沖區中扔掉char c = cin.get();if (c == '\n'){cout << "換行符遺留在緩沖區了" << endl;}else{cout << "換行符不在緩沖區了" << endl;}cout << "buf = " << buf << endl;}//cin.ignore()忽略
void test04()
{cin.ignore(); //默認忽略1個字符,如果里面有參數N,代表忽略N個字符char c = cin.get();//輸入是 a s//輸出是 c = cout << "c = " << c << endl;
}//cin.peek()偷窺
void test05()
{char c = cin.peek();//輸入 : as//輸出 :cout << "c = " << c << endl;c = cin.get();cout << "c = " << c << endl;
}//cin.putback() 放回
void test06()
{char c = cin.get();cin.putback(c); //放回的是原來的位置char buf[1024];cin.getline(buf, 1024);cout << "buf = " << buf << endl;
}/*判斷用戶輸入的內容 是字符串還是數字 1234 abcd
*/
void test07()
{cout << "請輸入一個字符串或者數字: " << endl;char c = cin.peek();if (c >= '0' && c <= '9'){int num;cin >> num;cout << "您輸入的是數字:" << num << endl;}else{char buf[1024] = { 0 };cin >> buf;cout << "您輸入的是字符串:" << buf<< endl;}}/*讓用戶輸入一個數字,必須在0到10之間的數字,如果輸入有誤重新輸入
*/
void test08()
{cout << "請輸入 0 ~ 10 之間的數字" << endl;int num;while (true){cin >> num;if (num > 0 && num < 10){cout << "輸入正確 --- 數字為:" << num << endl;break; //輸入正確 退出循環}cout << "輸入有誤,請重新輸入:" << endl;//緩沖區中的標志位 0代表正常 1 代表異常cin.clear(); cin.sync(); //清空標志位 并且刷新緩沖區//cin.ignore(); //VS2015以上 需要做 忽略//cout << "cin.fail = " << cin.fail() << endl;}}int main(){//test01();//test02();//test03();//test04();//test05();//test06();//test07();test08();system("pause");return EXIT_SUCCESS;
}