溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Cookbook系列之Cpp:數(shù)據(jù)流與文件

發(fā)布時間:2020-07-10 10:56:36 來源:網(wǎng)絡(luò) 閱讀:325 作者:zxn990 欄目:移動開發(fā)

問題01:如何垂直排列文本輸出,使其左對齊或右對齊

    使用標(biāo)準(zhǔn)的流操作符來設(shè)置字段的寬度和對齊方式。一個操作符就是操作在流上的函數(shù),通過操作符<<將這些操作函數(shù)應(yīng)用到流上。

  1. #include <iostream>
  2. #include <iomanip>                                                                
  3.                                                                                   
  4. using namespace std;                                                              
  5.                                                                                   
  6. int main()                                                                        
  7. {                                                                                 
  8.     ios_base::fmtflags flags = cout.flags();                                      
  9.     int width = 10;                                                               
  10.                                                                                   
  11.     cout << left                                                                  
  12.          << setw(width) << "Jim"                                                  
  13.          << setw(width) << "Tom"                                                  
  14.          << setw(width) << "Bill" << endl;                                        
  15.                                                                                   
  16.     cout << right                                                                 
  17.          << setfill('.')                                                          
  18.          << setw(width) << "Jim"                                                  
  19.          << setw(width) << "Tom"                                                  
  20.          << setw(width) << "Bill" << endl;                                        
  21.                                                                                   
  22.     return 0;                                                                     
  1. // output 
  2. Jim       Tom       Bill       
  3. .......Jim.......Tom......Bill 

問題02:如何格式化輸出浮點數(shù)

    使用<iomanip>和<ios>提供的標(biāo)準(zhǔn)操作來控制寫入流中的浮點數(shù)的格式。

  1. #include <iostream>
  2. #include <iomanip>                                                                
  3. #include <ios>                                                                    
  4.                                                                                   
  5. using namespace std;                                                              
  6.                                                                                   
  7. int main()                                                                        
  8. {                                                                                 
  9.     ios_base::fmtflags flags = cout.flags();                                      
  10.     double pi = 3.14159265;                                                       
  11.                                                                                   
  12.     cout << setprecision(5) << pi << endl;                                        
  13.                                                                                   
  14.     cout << fixed << showpos << setprecision(3) << pi << endl;                    
  15.                                                                                   
  16.     cout << scientific << noshowpos << pi << endl;                                
  17.                                                                                   
  18.     cout.flags(flags);                                                            
  19.                                                                                   
  20.     return 0;                                                                     
  1. // output 
  2. 3.1416 
  3. +3.142 
  4. 3.142e+00 

問題03:如何復(fù)制文件

    使用<fstream>中的C++文件流來把數(shù)據(jù)從一個流復(fù)制到另一個流。打開文件的方式在類ios中定義,常用的值如下:
>> ios::app:以追加的方式打開文件 
>> ios::ate:文件打開后定位到文件尾,ios:app就包含有此屬性 
>> ios::binary:以二進制方式打開文件,缺省的方式是文本方式。兩種方式的區(qū)別見前文 
>> ios::in:文件以輸入方式打開 
>> ios::out:文件以輸出方式打開 
>> ios::nocreate:不建立文件,所以文件不存在時打開失敗  
>> ios::noreplace:不覆蓋文件,所以打開文件時如果文件存在失敗 
>> ios::trunc:如果文件存在,把文件長度設(shè)為0 

  1. #include <fstream> 
  2.  
  3. using namespace std; 
  4.  
  5. int main() 
  6.     fstream in("/root/.bashrc", ios::binary | ios::in); 
  7.     fstream out("/tmp/bashrc", ios::binary | ios::out); 
  8.  
  9.     out << in.rdbuf(); 
  10.  
  11.     in.close(); 
  12.     out.close(); 
  13.  
  14.     return 0; 

問題04:如何刪除或重命名文件,并且這些操作是可移植的

    使用定義在<cstdio>中的標(biāo)準(zhǔn)C函數(shù)remove和rename。如果操作失敗,函數(shù)將返回非零值,并設(shè)置errno。你可以使用strerror來將錯誤信息輸出到cerr流中。

問題05:如何創(chuàng)建臨時文件

    有兩種辦法可以用來創(chuàng)建一個臨時文件。聲明在<cstdio>中的tmpfile函數(shù)不帶任何參數(shù),并且成功后返回一個FILE*指針,不成功返回一個NULL。你可以使用C的輸入輸出函數(shù)fread、fwrite、fgets、fputs等來操作它。tmpfile使用"wb+"的方式打開文件,并在程序退出后,自動刪除該文件。

    如果你需要一個具名的臨時文件,那么tmpnam可以滿足你的要求。tmpnam事實上不會產(chǎn)生一個臨時文件,它只是創(chuàng)建一個唯一的文件名,你可以用這個文件名來打開一個文件。tmpnam帶一個char*類型的參數(shù)并返回一個char*類型的值。你可以使用一個指向一個字符緩存的指針來傳遞它,但必須至少有L_tmpnam內(nèi)存,tmpnam將復(fù)制這個臨時的名字,并且返回一個指向這個緩存的指針。如果你傳遞一個NULL值的話,tmpfile將返回一個指向一個包含文件名的靜態(tài)緩存指針,也就意味著隨后的tmpnam調(diào)用將會改寫它。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI