vc++常用幾個頭文件的作用

#include<iostream> iostream的意思是標準輸入輸出流。#include<iostream>是標準的C++頭文件,任何符合標準的C++開發環境都有這個頭文件。還要注意的是:在VC編程時要添加:
using namespace std;

<>""有什麼區別?<>""表示編譯器在搜索頭文件時的順序不同,<>表示從系統目錄下開始搜索,然後再搜索PATH環境變量所列出的目錄,不搜索當前目錄; ""是表示先從當前目錄搜索,然後是系統目錄和PATH環境變量所列出的目錄。所以如果我們知道頭文件在系統目錄下就可以直接用<>,這樣可以加快搜索速度

#include<iomanip> io代表輸入輸出,這個頭文件是對輸入輸出的格式進行控制;主要是對cin,cout之類的一些操縱運算子。以下是常見的控制函數
dec置基數爲10相當於“%d”
hex置基數爲16相當於“%x”
oct置基數爲8相當於“%o”
setfill(‘c’)設填充字符爲c
setprecision(n)設置顯示的有效數字爲n
setw(n)設置域寬爲n個字符
這個函數的意思是保證輸出寬度爲n,例如:
cout<<setw(3)<<1<<setw(3)<<10<<setw(3)<<100<<endl;輸出結果爲:
 --1-10100;默認的是右對齊;當輸出長度大於3時,setw(3)不起作用。
setw:就是預設寬度;
setfill:在預設的寬度中如果存在沒有用完的寬度的大小,則用設定的字符來填充;
setw和setfill只對緊跟的後面的一個輸出有效。
setbase(int n):將數字轉換爲n進制;
cout<<setbase(8)<<setw(5)<<255<<endl;
結果爲:空格空格377;
setprecision:可控制輸出流顯示浮點數的數字的個數;c++默認的輸出數值的有效位是6.
如果setprecision(n)和setiosflags(ios::fixed)合用,則可以控制小數點右邊數字的個數;
setiosflags(ios::fixed)用定點的方式表示實數。如果與setiosflags(ios::scientific)合用,則可以控制指數表示法的小數點的位數。setiosflags(ios::scientific)表示 用指數的方式表示實數。
setiosflags調用的格式和作用如下:
setiosflags(ios::fixed)固定的浮點顯示
setiosflags(ios::scientific)指數表示
setiosflags(ios::left)左對齊
setiosflags(ios::right)右對齊
setiosflags(ios::skipws)忽略前導空白
setiosflags(ios::uppercase)16進制大寫輸出
setiosflags(ios::lowercase)16進制小寫輸出
setiosflags(ios::showpoint)強制顯示小數點
setiosflags(ios::showpos)強制顯示符號
程序實例:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
cout<<12345.0<<endl;//輸出"12345"
cout<<setiosflags(ios::fixed)<<setprecision(3)<<1.2345<<endl;//輸出"1.234"(遵循四捨六入五成雙的原則,而不是四捨五入的原則)
cout<<resetiosflags(ios::fixed);//需要用resetiosflags()函數清除前面的輸出格式
cout<<setiosflags(ios::scientific)<<12345.0<<endl;//輸出"1.23e+004"
cout<<setprecision(3)<<12345.0<<endl;//輸出"1.23e+004"
return 0;
}
c++的標準庫:sstream
sstream中包含了c++的三個輸入輸出流操作:ostringstream,istringstream,stringstream。
istringstream用於執行c++風格的串流出入操作;
ostringstream類用於執行c風格的串流的輸出操作;
stringstream類同時支持c風格的串流輸入輸出操作。
istringstream類是從istream(輸入流類)和stringstreambase(c++字符串流基類)派生而來,ostringstream是從
ostream(輸出流類)和stringstreambase(c++字符串流基類)派生而來,stringstream則是從iostream類(標準輸入輸出流類)和stringstreambase(c++字符串流基類)派生而來。
istringstream是由一個string對象構造而來,istringstream類從一個string類對象讀取字符。
istringstream的構造函數原型如下:
istringstream::istringstream(string str);
實例程序:
istringstream istr;
istr.str("1 56.7");
(上面也可以寫成istringstream istr(“1 56.7”))
cout<<istr.str()<<endl;
int a;
float b;
istr >> a;
cout<<a<<endl;
istr>>b;
cout<<b<<endl;
程序解釋:構造字符串流的時候,空格會成爲字符串參數的內部分解,例子程序中對a b對象的賦值操作驗證了這一點。字符串的空格成爲了整形數據和浮點型數據的分界點,利用分界點獲取的方法我們事實上完成了字符串到整形對對象與浮點型對象的拆分轉換過程。
str()成員函數的使用可以讓istringstream對象返回一個string字符串(cou<<istr.str());

ostringstream同樣是由一個string對象構造而來,ostringstream類向一個string對象插入字符。
ostringstream的構造函數圓形如下:
ostringstream::ostringstream(string str);
示例程序:
ostringstream ostr;
//ostr.str("abs");
ostr.put('d');
ostr.put('c');
ostr<<"sd";

string gstr = ostr.str();
cout<<gstr;
可以通過put()或者左移操作符不斷地向ostr插入字符或者字符串,通過str()函數返回經過增長過後字符串數據,需要注意的是,當構造對象的時候,對象內存中已經存在字符串數據的時候,那麼增長操作不會從結尾開始增加,而是修改原有的數據,超出的部分增長。

stringstream適用於c++風格的字符串輸入輸出的。stringstream的構造函數
stringstream::stringstream(string str);

示例程序:
stringstream ostr("ccc");
ostr.put('d');
ostr.put('e');
ostr<<"ssd";
string gstr = ostr.str();
cout<<gstr<,endl;

char a;
ostr>>a;
cout<<a;
除此之外,stringstream類的對象還經常用來string與各種類型數據之間的轉換。
stringstream sstr;
//實現int到string類型的轉換
int a = 100;
string str;
sstr<<a;
sstr>>str;
sout<<str<<endl;
//string到char[]類型轉換
sstr.clear();//如果想通過使用同一stringstream對象實現多種類型數據的轉換,在每一次轉換後都要使用clear函數。
重複使用stringstream對象的好處在於效率,stringstream對象的構造和析構函數通常是非常耗費CPU時間的。
string 那麼= “adaf”;
char cname[23];
sstr<<name;
sstr>>cname;
cout<<cname;
基於stringstream的轉換擁有類型安全和不會溢出的特性;相比於c庫的轉換,更加安全,自動和直接。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章