C++学习笔记系列三
生活随笔
收集整理的這篇文章主要介紹了
C++学习笔记系列三
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、new/delete擴展
2、C++的輸出輸入流
4、文件輸入輸出流 <fstream>
數組: ?vector ---> 動態數組,可以動態擴容。 方法是: 1、先根據當前容量capacity擴展空間,開辟出 2 * capacity 的空間。 2、再把原來空間的元素全部復制到新空間里面去。 3 、在在末尾添加新元素 4、最后回收原來的空間。
vector <int> vex; vec.size() --->當前數組存放了的大小 vec.push_back() --->向數組里方數據。 vec.capacity(); ? -->容量-->可以存放的個數 vec.reserve(100); -->設定最大值,先開空間,推薦這樣使用。
ifstream 文件輸入流要求文件是存在的。 eg:
ifstream ?ifs("a.txt") string word; ifs>>word ? ?//默認情況下 >> 是以空格作為分隔符的 getline(ifs,line) ? ? //可以讀取一行
vextor<string> lines; lines.push_back(line); ?--->將文件內容,放到vector 容器里面了。
---> ?ifs.close(); ? ? ? //關閉文件
ofstream ofs(“a.out”) //文件輸入流要求文件是存在的,而輸出流,不要求,沒有則創建一個。
輸入流有些函數是 以g結尾的,輸入流以p結尾的。
文件模式 ios::in? ? 打開文件做讀操作 ios::out? ?打開文件做寫操作,會刪除原有數據 ios::app? ?在每次寫之前找到文件尾 ios::trunc 打開文件時清空已存在的文件流 ios::ate? ?打開文件后立即定位到文件末尾 --->正對輸入流 ios::binary 以二進制模式進行IO操作
- 使用new表達式時發生的三個步驟: ? ? ? ? ? ? ? ? ? ? ? ? ? ??
- 調用名為operator new的標準庫函數,分配足夠大的原始的未類型化的內存,以保存指定類型的一個對象
- 運行該類型的一個構造函數去初始化對象
- 返回指向新分配并構造的構造函數對象的指針 使用
- delete表達式時,發生的步驟:
- 調用對象的析構函數
- 調用名為operator delete的標準庫函數釋放該對象所用的內存
2、C++的輸出輸入流
- 標準輸入輸出流:cin ?和 ?cout 對象是有緩沖區的,對于cin可以通過函數cin . ignore ?清空cin 的緩沖區。有兩個參數,第一個是要忽略的大小,第二個是結束符,如果要清空整個流的緩沖區,則一般使用 ?ignore(std::numeric_limits<std::streamsize>::max(), '\n')
- 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,相互轉換都可以。
- 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操作
- 針對文件輸入輸出流來說,也需要文件存在
- 字符串流stringstream ?
總結
以上是生活随笔為你收集整理的C++学习笔记系列三的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis命令详解:Hashs
- 下一篇: extern 在c/c++ 中的作用