#includeint main(int, char**)
cout
竟然不能輸出string
型別,這太令人詫異了?究其原因,stl中的許多標頭檔案(這其中就包括,visual c++環境下)都包含std::basic_string
類的定義式,因為它們都間接地包含了
(但不要試圖直接包含
)就可使用std::string
類,
typedef basic_string, allocator>
string;
// string型別其實乙個類模板的特化版本的型別重定義
然而,問題在於與之相關的operator<<
卻定義在
標頭檔案,你必須手動地將之包含。
所以,我們只需包含(也即對
operator<<
的包含)即可實現cout
對std::string
型別的輸出:
#include #include int main(int, char**)
以上的設定僅對visual c++環境有效,也即在大多數的stl的標頭檔案中,都包含了同樣的問題出現在將乙個string型別的輸入到乙個輸出檔案流時:std::basic_string
的定義式,僅通過對這些標頭檔案的包含即可使用std::string
類,而想使用operator<<
卻需手動包含標頭檔案。在重申一遍,這些包含和依賴關係僅對visual c++環境有效。
#include #include int main(int, char**)
檢視原始碼可知:
// iosfwd -> 被間接地包含在中
typedef basic_ostringstream,
allocator> ostringstream;
// xstring -> 被間接地包含在中
typedef basic_string, allocator>
string;
僅通過對檔案的包含,我們即可使用string
和ostringstream
等類,然而當我們想使用其成員函式時,需要包含其最終的實現版。
#include
為什麼乙個例項只有乙個LGWR
昨天有人問為什麼只有乙個lgwr程序呢?在單例項中,確實只有乙個lgwr程序,在rac中,每個例項都有乙個lgwr程序。lgwr負責將redo log buffer中的資料寫入redo log file.即使你給日誌group 分配了多個member,也只有乙個lgwr去寫入。注意,多個日誌成員他們...
高低壓為什麼不能共地的乙個解釋
很多人都知道,當有高低電壓的時候,一般是不允許共地的,而是需要隔離開,比如我們常用的開關電源,它的輸入是220vac,輸出5vdc,其中的變壓器既是降壓,也起隔離作用。一般的講,電壓越高,隔離的距離越遠,有些因為體積版面考慮,不能做遠的,採用割空pcb方式,加大間距,這個的原因是pcb的材料一般是f...
我們為什麼選擇乙個產品
生活中總會面臨無數的選擇,尤其是在網際網路產品 手機等電子產品方面是品種 型號繁多,但是我們是根據什麼做出我們的選擇的呢,我覺得能分為以下幾點 首先,喜好。這個是很籠統的啦,每個人的喜好都不一樣,就像有人喜好黑色的衣服 有人喜好白色的等等各不一樣,這個可能是我們做出選擇的基礎吧。第二個,經濟能力。其...