日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++中的IO流(流的概念和流类库的结构,标准的输入输出流)

發布時間:2023/11/30 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++中的IO流(流的概念和流类库的结构,标准的输入输出流) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

流的概念和流類庫的結構

程序的輸入指的是從輸入文件將數據傳送給程序,程序的輸出指的是從程序將數據傳送給輸出文件
c++輸入輸出包含以下三個方面的內容

  • 對系統指定的標準設備的輸入輸出。即從鍵盤輸入數據,輸出到顯示器屏幕,這種輸入輸出稱為標準的輸入輸出,簡稱標準I/O
  • 以外存磁盤文件為對象進行輸入和輸出,即從磁盤文件輸入數據,數據輸出到磁盤文件。以外存文件為對象的輸入輸出稱為文件的輸入輸出,簡稱文件I/O
  • 對內存中指定的空間進行輸入和輸出。通常指定一個字符數組作為存儲空間(實際上可以利用該空間存儲任何信息)。這種輸入輸出稱為字符串輸入輸出,簡稱串I/O
  • 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流(流的概念和流类库的结构,标准的输入输出流)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。