c++中的IO流(流的概念和流类库的结构,标准的输入输出流)
生活随笔
收集整理的這篇文章主要介紹了
c++中的IO流(流的概念和流类库的结构,标准的输入输出流)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
流的概念和流類庫的結構
程序的輸入指的是從輸入文件將數據傳送給程序,程序的輸出指的是從程序將數據傳送給輸出文件
c++輸入輸出包含以下三個方面的內容
c++編譯器系統提供了用于輸入輸出的iostream類庫,iostream這個單詞是由3個部分組成,即i-o-stream,意為輸入輸出流。在iostream類庫中包含許多用于輸入輸出的類。
標準的輸入流
cin.get緩沖區中讀取一個字符
cin.get(兩個參數)不讀換行符
cin.getline()讀取換行,并且扔掉
cin.ignore 忽略(N)N代表忽略字符數
cin.peek偷窺 偷看1個字符然后放回去
cin.putback 放回 把字符放回緩沖區
#include<iostream>using namespace std;/*cin.get()//一次只能讀取一個字符cin.get(一個參數)//讀一個字符cin.get(兩個參數)//可以讀字符串cin.getline()cin.ignore()cin.peek()cin.putback()*/void test01(){//輸入as 緩沖區中有 a s 和換行 第一個拿 a 第二個拿 s 第三個拿換行,第四次等待下次輸入char c=cin.get();cout << "c=" << c<<endl;c = cin.get();cout << "c=" << c << endl;c = cin.get();cout << "c=" << c << endl;c = cin.get();cout << "c=" << c << endl;}void test02(){//cin.get();//可以讀字符串char buf[1024];cin.get(buf, 1024);char c = cin.get();if (c == '\n'){cout << "換行還在緩沖區" << endl;}else{cout << "換行不在緩沖區" << endl;}cout << buf << endl;}//cin.get(兩個參數)讀取字符串時,不會把換行符拿走,遺留在緩沖區中void test03(){char buf[1024];cin.getline(buf, 1024);char c = cin.get();if (c == '\n'){cout << "換行還在緩沖區" << endl;}else{cout << "換行不在緩沖區" << endl;}//cin.getline把換行符讀取,并且扔掉}void test04(){cin.ignore(2);//沒有參數代表忽略一個字符,帶參數n,代表忽略n個字符char c=cin.get();cout << "c=" << c << endl;}//cin.peek()偷窺void test05(){//輸入as 偷看一眼a然后再放回緩沖區,緩沖區中還是aschar c = cin.peek();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 << endl;}int main(){//test01();//test02();//test03();//test04();//test05();test06();system("pause");return 0;}輸入流案例
判斷用戶輸入的是字符串還是數字,利用偷窺或者放回
讓用戶輸入指定范圍內的數字,如果不正確請重新輸入
//案列1 判斷用戶輸入的是字符串,還是數組?void test07(){cout << "請輸入一串數字或者字符串" << endl;//偷窺char c = cin.peek();if (c >= '0'&&c <= '9'){int num;cin >> num;cout << "您輸入的是數字,數字為" << num << endl;}else{char buf[1024];cin >> buf;cout << "您輸入的是字符串,字符串為" << buf << endl;}}//案例2 讓用戶輸入1到10的數字,如果輸入有誤,重新輸入void test08(){int num;cout << "請輸入一個1到10的數字:" << endl;while (true){cin >> num;if (num > 0 && num <= 10){cout << "輸入的數字為" << num << endl;break;}//cout << "對不起請重新輸入" << endl;//重置標志位cin.clear();//重置標志位cin.sync();//清空緩沖區//cout << "標志位" << cin.fail() << endl;//標志位0正常的 1不正常}}int main(){//test01();//test02();//test03();//test04();//test05();//test06();//test07();test08();system("pause");return 0;}標準輸出流
#include<iostream>using namespace std;/* cout.put() //向緩沖區寫字符 cout.write()//從buffer中寫num個字節到當前輸出流中 */void test01() {//cout.put('a').put('b');char buf[1024] = "helloworld";cout.write(buf, strlen(buf)); }int main() {test01();system("pause");return 0; }標準輸出流
#include<iostream> #include<iomanip>//使用控制符頭文件 using namespace std;/* cout.put() //向緩沖區寫字符 cout.write()//從buffer中寫num個字節到當前輸出流中 */void test01() {//cout.put('a').put('b');char buf[1024] = "helloworld";cout.write(buf, strlen(buf)); }void test02() {//通過流成員函數int number = 99;cout.width(20);cout.fill('*');cout.setf(ios::left);//輸入內容做對齊cout.unsetf(ios::dec);//卸載十進制cout.setf(ios::hex);//變為16進制cout.setf(ios::showbase);//強制輸出整數的基數 0 0xcout.unsetf(ios::hex);//卸載十六進制cout.setf(ios::oct);//變為8進制cout << number << endl;}//控制符的方式顯示 void test03() {int number = 99;cout << setw(20)<< setfill('^')<< setiosflags(ios::showbase)//基數<< setiosflags(ios::left)//左對齊<< hex //十六進制<< number<< endl; }int main() {test03();system("pause");return 0; }總結
以上是生活随笔為你收集整理的c++中的IO流(流的概念和流类库的结构,标准的输入输出流)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑网1归来刀昆仑装备五行有哪些推荐
- 下一篇: c++中的文件读写的操作