国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > iOS > 正文

【C++】iostream, fstream, stringstream知識(shí)

2019-11-06 07:47:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

以前學(xué)習(xí)C++的時(shí)候, 總是囫圇吞棗地理解cin, cout等東東, 最近又在復(fù)習(xí)C++,  復(fù)習(xí)到IO類(lèi)這一章節(jié)的時(shí)候, 有點(diǎn)感觸, 所以呢, 打算記錄一下。

         俗話說(shuō), 一圖勝過(guò)千言萬(wàn)語(yǔ), 這不是沒(méi)有道理的, 下面, 我們來(lái)看看基本IO類(lèi)的繼承結(jié)構(gòu):

      在我們寫(xiě)C++簡(jiǎn)單代碼的時(shí)候, 最喜歡寫(xiě)#include <iostream>  , 那么, 這實(shí)際上是在包括IO流的頭文件, 而用using namespace std;則表示用標(biāo)準(zhǔn)空間, 這樣才能用cin,cout, endl等東東啊。

      從上圖看, 實(shí)際上可以把IO類(lèi)分為三類(lèi):

      1. iostream類(lèi): 負(fù)責(zé)與控制臺(tái)輸入輸出打交道, 這個(gè)我們已經(jīng)很熟悉了。   注意: 實(shí)際具體又可以區(qū)分為:istream和ostream

      2. fstream類(lèi):   負(fù)責(zé)與文件輸入輸出打交道, 這個(gè)我們接觸過(guò)。  注意: 實(shí)際具體又可以區(qū)分為:ifstream和ofstream

      3. stringstream類(lèi):負(fù)責(zé)與string上的輸入輸出打交道, 這個(gè)我們暫時(shí)還真沒(méi)用過(guò)。  注意: 實(shí)際具體又可以區(qū)分為:istringstream和ostringstream

       下面, 我們來(lái)一一學(xué)習(xí)/復(fù)習(xí):

      1. IO類(lèi)之iostream

          iostream類(lèi)的對(duì)象, 如cin, cout, 會(huì)直接與控制臺(tái)輸入輸出關(guān)聯(lián), 下面我們來(lái)看看最簡(jiǎn)單的程序:

[cpp] view plain copy 在CODE上查看代碼片#include <iostream>  using namespace std;    int main()  {      int i = -1;            cin >> i; // cin從控制臺(tái)接收輸入, 并保存在i中        cout << i << endl; // count把i的值輸出到控制臺(tái)        return 0;  }  

 %20 %20 很簡(jiǎn)單很好理解吧。

 %20 %20 2.%20IO類(lèi)值之fstream

 %20 %20 %20fstream的對(duì)象,%20與文件建立關(guān)聯(lián),%20我們已經(jīng)很熟悉了,%20直接看代碼吧:

[cpp] view%20plain copy #include <iostream>  #include <string>  #include <fstream>  using namespace std;    int main()  {      ifstream in("test.txt"); // 建立in與文件test.txt之間的額關(guān)聯(lián)      if(!in)      {          cout << "error" << endl;          return 1;      }        string line;      while(getline(in, line))      {          cout << line << endl;         }        return 0;  }   %20 %203.%20IO類(lèi)之stringstream

 %20 %20 stringstream的對(duì)象與內(nèi)存中的string對(duì)象建立關(guān)聯(lián),%20往string對(duì)象寫(xiě)東西,%20或者從string對(duì)象讀取東西。

 %20 %20 我們先看這樣一個(gè)問(wèn)題,%20假設(shè)test.txt的內(nèi)容為:

lucy%20123 

lili%20234%20456

tom%20222%20456%20535

jim%202345%20675%2034%20654

 %20 %20 其中每行第一個(gè)單詞是姓名,%20后面的數(shù)字都是他們的銀行卡密碼,%20當(dāng)然啦,%20jim的銀行卡最多,%20有4張,%20現(xiàn)在,%20要實(shí)現(xiàn)如下輸出,%20該怎么做呢?

lucy%20123x 

lili%20234x %20 456x 

tom%20222x %20 456x %20 535x 

jim%202345x %20 675x %20 34x %20 654x 

 %20 %20 直接看程序吧:

[cpp] view%20plain copy #include <iostream>  #include <string>  #include <fstream>  #include <sstream>  using namespace std;    int main()  {      ifstream in("test.txt"); // 建立in與文件test.txt之間的額關(guān)聯(lián)      if(!in)      {          cout << "error" << endl;          return 1;      }        string line;       string passWord;      while(getline(in, line))      {          istringstream ss(line); // 建立ss與line之間的關(guān)聯(lián)          int i = 0;          while(ss >> password) // ss從line讀取東西并保存在password中          {                 cout << password + (1 == ++i ? "" : "x") << " ";          }                    cout << endl;      }        return 0;  }   %20 %20 %20 結(jié)果ok.

 %20 %20 %20 

 %20 %20 %20 下面,%20我們來(lái)看看如何利用istringstream實(shí)現(xiàn)字符串向數(shù)值的轉(zhuǎn)化:

[cpp] view%20plain copy #include <iostream>  #include <string>  #include <sstream>  using namespace std;    int main()  {      int a = -1;      string s = "101";      istringstream is(s); // 建立關(guān)聯(lián)      cout << is.str() << endl; // 101,  看來(lái)is和s確實(shí)關(guān)聯(lián)起來(lái)了啊        is >> a;        cout << a << endl; // 101        return 0;  }  

 %20 %20 %20當(dāng)然,%20我們也可以把數(shù)字格式化為字符串,%20如下(下面這個(gè)程序有問(wèn)題):

[cpp] view%20plain copy #include <iostream>  #include <string>  #include <sstream>  using namespace std;    int main()  {      string str;      ostringstream os(str); // 建立關(guān)聯(lián), 但實(shí)際沒(méi)有關(guān)聯(lián)上啊!!!      os << "hello";        cout << str << endl;  // str居然是空, 怎么不是"abc"呢? 我不理解        return 0;  }   %20 %20 看來(lái),%20上面的關(guān)聯(lián)是不成功的,%20改為:

[cpp] view%20plain copy 派生到我的代碼片#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;  }        
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 盱眙县| 临沂市| 沅陵县| 德庆县| 东乡| 莒南县| 滨海县| 新绛县| 嘉荫县| 科尔| 孝昌县| 行唐县| 岳普湖县| 克山县| 隆子县| 惠来县| 汉源县| 新乡市| 吉木萨尔县| 石楼县| 北安市| 新巴尔虎右旗| 通化县| 磴口县| 伊金霍洛旗| 辰溪县| 亳州市| 玉溪市| 侯马市| 平江县| 南昌县| 孟津县| 张家港市| 团风县| 苗栗市| 金阳县| 石泉县| 东丰县| 偃师市| 文成县| 高尔夫|