C++ Primer 學習筆記(第一章:開始)

##C++ Primer 學習筆記(第一章:開始)ios


[TOC]函數


  1. Windows命令行下運行Visual Studio 編譯器:cl /EHsc prog1.cpp,微軟編譯器會自動生成一個可執行文件prog1.exe學習

  2. 標準庫 4個IO對象:ui

cin(istream):標準輸入 cout(ostream):標準輸出 cerr(ostream):標準錯誤,輸出警告和錯誤信息 clog(ostream):輸出程序運行時的通常信息this

  1. 輸出運算符(<<)和輸入運算符(>>)的計算結果就是其左值運算對象。.net

  2. 寫入endl結束當前行,並將與設備關聯的緩衝區(buffer)刷到設備當中。命令行

  3. 註釋界定符(/**/)繼承自C語言。當註釋界定符跨越多行時,最好能顯式指出其內部的程序行都屬於多行註釋的一部分:code

/*
*
*
*/

註釋界定符不能嵌套,而單行註釋能夠忽略行內任何內容,包括界定符。對象

  1. 讀取不定量數據while(std::cin >> value)檢測的是cin,當使用一個istream對象做爲條件時,效果是檢測流的狀態。當遇到一個文件結束符,或遇到一個無效輸入時(類型不符),則istream對象的狀態會變爲無效。處於無效的istream狀態會變假。blog

  2. 從鍵盤輸入文件結束符:(文件結束符並非回車)從鍵盤向程序指出文件結束,在Windows系統中是Ctrl + Z,而後按EnterReturn鍵。Unix系統中是Ctrl + D

  3. 編譯器能夠查出的錯誤: 語法錯誤(syntax error) 類型錯誤(type error) 聲明錯誤(declaration error):未聲明就使用或缺乏命名空間。

  4. #include包含來自標準庫的頭文件時,應該用尖括號(<>)包含頭文件名。對於不屬於標準庫的頭文件,則用雙引號("")包圍。

  5. while (cin >> …)while(!cin)能用的緣由: 標準庫中:

/**
*  @brief  The quick-and-easy status check.
*  
*  This allows you to write constructs such as
*  "if (!a_stream) ..." and "while (a_stream) ..."
*/
operator void*() const
{ return this->fail() ? 0 : const_cast<basic_ios*>(this); }

bool operator!() const
{ return this->fail(); }

函數在while(cin)或是if(cin)時被調用,將流對象轉換成void *類型。 bool operator!() const函數在while(!cin)或是if(!cin)時被調用,將流對象轉換成bool類型。 C++中有特殊的兩個操做符能夠重載,分別是void*!,即operator void*()bool operator!()。 總結:一個對象a,對於!a操做,若是對象重載了!操做符,則執行重載操做函數,不然先判斷是否重載了強制轉換操做符(void*),並執行強制轉換操做符,不然判斷是否能直接轉換爲bool類型。 (總結摘自CSDN博客

  1. Windows cmd下命令行使用文件重定向: 即xx.exe < (數據輸入文件)xx.exe < (數據輸入文件) > (輸出文件)
相關文章
相關標籤/搜索