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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++学习笔记系列三

發布時間:2025/3/15 c/c++ 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++学习笔记系列三 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、new/delete擴展
  • 使用new表達式時發生的三個步驟: ? ? ? ? ? ? ? ? ? ? ? ? ? ??
  • 調用名為operator new的標準庫函數,分配足夠大的原始的未類型化的內存,以保存指定類型的一個對象
  • 運行該類型的一個構造函數去初始化對象
  • 返回指向新分配并構造的構造函數對象的指針 使用
  • delete表達式時,發生的步驟:
  • 調用對象的析構函數
  • 調用名為operator delete的標準庫函數釋放該對象所用的內存

2、C++的輸出輸入流
  • 標準輸入輸出流:cin ?和 ?cout 對象是有緩沖區的,對于cin可以通過函數cin . ignore ?清空cin 的緩沖區。有兩個參數,第一個是要忽略的大小,第二個是結束符,如果要清空整個流的緩沖區,則一般使用 ?ignore(std::numeric_limits<std::streamsize>::max(), '\n')
它在頭文件 #include <limits>中。
  • Ctrl + d 結束輸入,Ctrl + c ?關閉程序。?
  • 1、標準輸入輸出流 -- 頭文件<iostream> cin/cout/cerr-- printf/scanf
  • 2. 文件輸入輸出流 -- 頭文件<fstream> ifstream/ofstream/fstream fprintf? ?fscanf? fopen fwrite fclose
    • ifstream / fstream ?要求文件存在,(要輸入),通過 tellg( )獲取當前游標位置,seekg()偏移游標位置。除了getline 獲取一行外,當文件較大時,也可以用 read( ) 要獲取多長數據(字節數)
    • ofstream ?不要求文件必須存在,否則及創建。通過 tellp( )獲取當前游標位置,seekp()偏移游標位置。
    • 對于文件流,在操作完成之后,要close關閉。
      • 打開方式: ?in/ate?
      • out/trunk/app
      • binary
  • 3. 字符串流 -- 頭文件<sstream> istringstream/ostringstream/stringstream sscanf? sprintf
    • 字符流不用關閉
    • istringstream輸入流,把字符串類型轉成其他類型--->可以用來讀取配置文件
    • ostringstream輸出流把其他類型轉成字符串類型 ?--->將整形數據準換成字符串(多用)。
    • stringstream,相互轉換都可以。
3、流的狀態
  • badbit? ? ?系統級故障,不可恢復 ? ?--->? bad( )
  • failbit 可以恢復的錯誤 ? ? ? ? ? ? ? ? ? ----> ?fail( )
  • eofbit? ? ?碰到了文件結尾 ? ? ? ? ? ? ?? ---->eof( )
  • goodbit 有效狀態 ? ? ? ? ? ? ? ? ? ? ? ?---->good( )
  • 查詢流的狀態
  • cin.bad()
  • cin.fail()
  • cin.eof()
  • cin.good()
  • 重置狀態? cin.clear()

4、文件輸入輸出流 <fstream>
  • 第一個容器 vector -->在 std 里面,

數組: ?vector ---> 動態數組,可以動態擴容。 方法是: 1、先根據當前容量capacity擴展空間,開辟出 2 * capacity 的空間。 2、再把原來空間的元素全部復制到新空間里面去。 3 、在在末尾添加新元素 4、最后回收原來的空間。
vector <int> vex; vec.size() --->當前數組存放了的大小 vec.push_back() --->向數組里方數據。 vec.capacity(); ? -->容量-->可以存放的個數 vec.reserve(100); -->設定最大值,先開空間,推薦這樣使用。
  • ifstream ? 文件輸入流類型。

ifstream 文件輸入流要求文件是存在的。 eg:
  • string word;
  • while(ifs >> word) //因為word是一個字符串,故輸入也默認情況下以空格作為分隔符。

ifstream ?ifs("a.txt") string word; ifs>>word ? ?//默認情況下 >> 是以空格作為分隔符的 getline(ifs,line) ? ? //可以讀取一行
vextor<string> lines; lines.push_back(line); ?--->將文件內容,放到vector 容器里面了。
---> ?ifs.close(); ? ? ? //關閉文件
  • 輸出流,ofstream ?

ofstream ofs(“a.out”) //文件輸入流要求文件是存在的,而輸出流,不要求,沒有則創建一個。
輸入流有些函數是 以g結尾的,輸入流以p結尾的。
文件模式 ios::in? ? 打開文件做讀操作 ios::out? ?打開文件做寫操作,會刪除原有數據 ios::app? ?在每次寫之前找到文件尾 ios::trunc 打開文件時清空已存在的文件流 ios::ate? ?打開文件后立即定位到文件末尾 --->正對輸入流 ios::binary 以二進制模式進行IO操作
  • 針對文件輸入輸出流來說,也需要文件存在
ss.str(); ? -->輸出緩沖區的內容。
  • 字符串流stringstream ?
? ? ? sprintf( ); ?-->拼接字符串

總結

以上是生活随笔為你收集整理的C++学习笔记系列三的全部內容,希望文章能夠幫你解決所遇到的問題。

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