C++標準IO庫(iostream,fstream,sstream)
參考資料:
http://blog.163.com/hbu_lijian/blog/static/126129153201201710456994/
http://blog.csdn.net/stpeace/article/details/44763009
一、功能:
iosstream定義讀寫控制視窗的型別;
fstream定義讀寫已命名檔案的型別;
sstream多定義的型別則用於讀寫儲存在記憶體中的string物件。
二、注意:IO物件不可複製或賦值,也就無法為引數或返回值。
三、基本IO類的繼承結構:
四、IO標準庫的條件狀態:
五、字串流
istringstream:由istream派生而來,提供讀string的功能
ostringstream:由ostream派生而來,提供寫string的功能
stringstream:由iostream派生而來,提供讀寫string的功能
</pre><pre name="code" class="cpp">string line,word;
while(getline(cin, line))
{
istringstream string_stream(line);
while(string_stream >> word)
cout<<word<<endl;
}
1.
<pre name="code" class="cpp">ifstream infile;
infile.open(path.c_str()); 引數需轉換為c型別。
if(!infile) //如果沒有開啟成功檔案
2.
ofstream outfile;
outfile.open(path.c_str(), ofstream::app); 第二個引數預設為out,清空檔案準備寫。app為在檔案問追加。
3.最好在開啟一檔案前,in.close();in.clear(); 關閉可能張開啟的檔案,和清空錯誤標誌;
七、緩衝區,控制檯:
1.io物件不可複製和賦值的。所以只能引用。
2.它有一些錯誤的標誌,如strm::eofbit.可以通過s.eof()獲取到01.這個以後要是有用,再細看吧。
3.cout<<"hell,I'm countryhu!"<<endl;是在輸出串後加\n後重新整理流,
cout<<"hell,I'm countryhu!"<<flush;不加\n重新整理流;
如需重新整理整個快取則將混存資料放在unitbuf和nounitbuf之間。
4.讀入前都會重新整理輸出。但輸入與輸出可以動態繫結。
cin.tie($cout);將cin與cout繫結
ostream *old_tie = cin.tie();
cin.tie(0);取消cin當前繫結
八、IOstream
#include <iostream>
using namespace std;
int main()
{
int i = -1;
cin >> i; // cin從控制檯接收輸入, 並儲存在i中
cout << i << endl; // count把i的值輸出到控制檯
return 0;
}
九、Fstream
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
ifstream in("test.txt"); // 建立in與檔案test.txt之間的額關聯
if(!in)
{
cout << "error" << endl;
return 1;
}
string line;
while(getline(in, line))
{
cout << line << endl;
}
return 0;
}
</pre><p></p><strong>十、<span style="font-family:Arial; font-size:14px; line-height:26px">stringstream</span></strong><p></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">stringstream的物件與記憶體中的string物件建立關聯, 往string物件寫東西, 或者從string物件讀取東西。</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">我們先看這樣一個問題, 假設test.txt的內容為:</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">lucy 123 </p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">lili 234 456</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">tom 222 456 535</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">jim 2345 675 34 654</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">其中每行第一個單詞是姓名, 後面的數字都是他們的銀行卡密碼, 當然啦, jim的銀行卡最多, 有4張, 現在, 要實現如下輸出, 該怎麼做呢?</p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px"></p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">lucy 123<span style="color:rgb(255,0,0)">x</span> </p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">lili 234<span style="color:rgb(255,0,0)">x</span> 456<span style="color:rgb(255,0,0)">x</span> </p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">tom 222<span style="color:rgb(255,0,0)">x</span> 456<span style="color:rgb(255,0,0)">x</span> 535<span style="color:rgb(255,0,0)">x</span> </p><p style="margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; font-family:Arial; font-size:14px; line-height:26px">jim 2345<span style="color:rgb(255,0,0)">x</span> 675<span style="color:rgb(255,0,0)">x</span> 34<span style="color:rgb(255,0,0)">x</span> 654<span style="color:rgb(255,0,0)">x</span> </p><pre code_snippet_id="1672147" snippet_file_name="blog_20160504_7_6405824" name="code" class="cpp">#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
ifstream in("test.txt"); // 建立in與檔案test.txt之間的額關聯
if(!in)
{
cout << "error" << endl;
return 1;
}
string line;
string password;
while(getline(in, line))
{
istringstream ss(line); // 建立ss與line之間的關聯
int i = 0;
while(ss >> password) // ss從line讀取東西並儲存在password中
{
cout << password + (1 == ++i ? "" : "x") << " ";
}
cout << endl;
}
return 0;
}
//利用istringstream實現字串向數值的轉化
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int a = -1;
string s = "101";
istringstream is(s); // 建立關聯
cout << is.str() << endl; // 101, 看來is和s確實關聯起來了啊
is >> a;
cout << a << endl; // 101
return 0;
}
//把數字格式化為字串
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main()
{
int a = -1;
ostringstream os;
os << "hello" << a;
cout << os.str() << endl; // hello-1
return 0;
}
相關推薦
C++標準IO庫(iostream,fstream,sstream)
參考資料: http://blog.163.com/hbu_lijian/blog/static/126129153201201710456994/ http://blog.csdn.net/stpeace/article/details/44763009 一、功能:
C++標準IO庫
spl 連接 target etl 形參 follow string 基本 參數 概述 先不要急著知道怎麽用這個玩意,讓我們一起先來看一看C++標準IO庫的框架,其實挺有意思的!那就開始吧! C++的輸入輸出由標準庫提供,標準庫提供了一族類型,支持對文件、string對象、
C++Primer,C++標準IO庫閱讀心得
IO 標準庫型別和標頭檔案 iostream istream 從流中讀取 ostream 寫到流中去 iostream 對流進行讀寫;從 istream 和 ostream 派生而來fstream ifstream 從檔案中讀取;由 istream 派生而來 ofstream 寫到檔案中去
C++中的IO類 iostream fstream stringstream 小結
以前學習C++的時候, 總是囫圇吞棗地理解cin, cout等東東, 最近又在複習C++, 複習到IO類這一章節的時候, 有點感觸, 所以呢, 打算記錄一下。 俗話說, 一圖勝過千言萬語, 這不是沒有道理的, 下面, 我們來看看基本IO類的繼承
C++ Primer筆記(二)標準IO庫
1.簡單的IO繼承層次 Io型別在三個獨立的標頭檔案中定義:iostream定義讀寫控制檯視窗的型別;fstream定義讀寫已命名檔案的型別;而sstream定義的型別用於讀寫儲存在記憶體中的string物件。 標頭檔案 型別 iostream istrea
C++中的標準IO庫詳解
<分析>: (1)IO類之間的繼承關係圖如下: (2)IO型別有三個獨立的標頭檔案,iostream標頭檔案定義了控制視窗的型別,fstream標頭檔案定義了讀寫已命名檔案的型別,ss
Part10 泛型程序設計與C++標準模板庫 10.2叠代器
main inf 數據 序列 3.3 距離 結果 示例 res 叠代器是算法和容器的橋梁 叠代器用作訪問容器中的元素 算法不直接操作容器中的數據,而是通過叠代器間接操作算法和容器獨立 增加新的算法,無需影響容器的實現 增加新的容器,原有的算法也能適用 輸
C++ 標準模板庫介紹(STL)
dha 組件 queue 實驗 sstream 基本 自己 regex 程序 1. STL 基本介紹 C++ STL(標準模板庫)是惠普實驗室開發的一系列軟件的統稱,是一套功能強大的 C++ 模板類。STL的目的是為了標準化組件,這樣就不用重新開發,讓後來者可以使用現成的組
C/C++基礎----IO庫
結束 定義 崩潰 size 傳遞 ios col clear 機器 IO對象無拷貝或賦值,通常以引用形式傳遞。 IO庫條件狀態 strm::iostate 一種機器相關的類型,提供了表達條件狀態的完整功能 strm::badbit 用
C++標準模板庫STL
STL 標準模板庫 包括容器,演算法,迭代器 容器用來儲存資料,比如vector,list,堆疊等,string也算;一共有八個 演算法就是對容器進行操作,比如增刪改查資料 迭代器用來遍歷容器itreator 用指標的方式來遍歷容器的資料 注:平時
C++標準模版庫STL
思維導圖 STL共有六大元件: 一。容器(Container):是一種資料結構,如list,vector,deque,queue等,以模板類的方法提供,為了訪問容器中的資料,可以使用由容器類提供的迭代器。 二。迭代器(Iterator):提供了訪問容器中物件的方法。 三。演算法(Al
C++標準模板庫vector介紹
版權宣告:本文為博主原創文章,轉載請註明出處。 個人部落格地址:https://yangyuanlin.club 歡迎來踩~~~~ 介紹 Vector Vectors 包含著一系列連續儲存的元素,其行為和陣列類似。訪問Vector中的任意元素或從
[C/C++]_[初級]_[關於使用C標準時間庫對UTC和本地時間的轉換]
場景 Android,Java的Date是UTC時間, 我們在讀取某些表的數值時往往得到的就是UTC秒數, 如何用C++轉換為本地時間是一個常見的功能需求. 還有就是UTC到本地時間的轉換, 已知道一個字串的UTC時間,如何轉換為對應的本地時間. C標準時間庫+擴充套件
《Linux程式設計》第三章(標準IO庫、格式化輸入輸出、檔案和目錄的維護、掃描目錄)
標準IO庫 在啟動程式時,有三個檔案流是自動開啟的,分別是stdin,stdout,stderr。 1. fopen函式:用於檔案和終端的輸入和輸出。函式原型如下: #include <stdio.h> FILE *fopen(const char* f
C++標準模板庫(STL):vector、deque和list
之所以把這幾個容器寫在一起,是因為他們都是序列式容器。 序列式容器以線性序列的方式儲存元素(線性結構)。它沒有對元素進行排序,元素的順序和儲存它們的順序相同。以下有幾種標準的序列容器,每種容器都具有不同的特性: vector<T>(向量容器)是一個長度可變的
C++標準模板庫(STL):常用演算法
find() ---algorithm中的函式 find(start,end,value) start搜尋的起點,end搜尋的終點,要尋找的value值 容器的表示方法(只有vector沒有內建find()函式,其他容器都有,其他容器用自己的find()
《C++語言程式設計基礎》學習第十章泛型程式設計與C++標準模板庫
STL簡介:標準模板庫(Standard Template Library,簡稱STL)提供了一些非常常用的資料結構和演算法 標準模板庫(Standard Template Library,簡稱STL)定義了一套概念體系,為泛型程式設計提供了邏輯基礎 STL中的各個類模板、
5Apue標準IO庫
1、流和FILE物件 之前提到的檔案IO函式都是圍繞檔案描述符的 而對於標準庫,它們的操作是圍繞流進行的,當用標準IO庫開啟或建立一個檔案時,我們已使一個流與一個檔案相關聯 標準IO檔案流可用於單位元組或多位元組字符集。 流的定向決定了所讀、寫的字元是單位元組還
【演算法筆記】第六章:C++標準模板庫(STL)介紹
【演算法筆記】第六章:C++標準模板庫(STL)介紹 標籤(空格分隔):【演算法筆記】 第六章:C++標準模板庫(STL)介紹 第六章:C++標準模板庫(STL)介紹 6.1 vector的常見用法詳解
C++標準模板庫(STL)迭代器的原理與實現
引言 迭代器(iterator)是一種抽象的設計理念,通過迭代器可以在不瞭解容器內部原理的情況下遍歷容器。除此之外,STL中迭代器一個最重要的作用就是作為容器(vector,list等)與STL演算法的粘結劑,只要容器提供迭代器的介面,同一套演算法程式碼可以利