【C++ 相關】

C++ 比較經典的書籍

Thinking in C++    C++編程思想        C++入門書籍,不多介紹 
http://www.laixp.cn/soft/sort01/sort02/down-12215.html
C++ Primer 5 th    也是一本入門書籍,很經典,初學者多看 
http://www.laixp.cn/soft/sort01/sort02/down-11801.html
http://www.laixp.cn/soft/sort01/sort02/down-11800.html
深入C++對象模型   這本書主要講解C++一些底層設計原理,比如說一些虛函數表,多態的實現原理、方法,要想再C++上有深入瞭解,這本書是一本必看書,推薦 
http://www.laixp.cn/soft/sort01/sort02/down-12267.html
C++設計模式    設計模式,很有名的一般書,四人幫寫的。現代軟件講究的是可複用,內聚解耦,這本書提供了多種模式供我們選擇,是C++必看的一本書 
http://www.laixp.cn/soft/sort01/sort02/down-12331.html
大規模程序設計 大家知道C++程序編譯時比較慢的,筆者開發的一個項目,改動一些基礎類的話,重新編譯要花掉幾個小時,這個人工成本是非常大的。那麼這 
本講解的就是如何減少對其他文件的依賴,怎麼實現接口與實現的分離,強烈推薦看的一本書 
http://www.laixp.cn/soft/sort01/sort02/down-11229.html
Effevtive_STL   本書是對STL的一些原理和一些使用STL過程中經常放的一些錯誤進行分析,講解,很不錯的一本書,推薦看 
http://www.laixp.cn/soft/sort01/sort02/down-11235.html
More_Effective_STL 這本書是對Effevtive_STL的補充,不多說 
http://www.laixp.cn/soft/sort01/sort02/down-11244.html
還有幾本,我就不多作介紹了,大家可以自己去了解 
Exceptional C++ 中文 http://www.laixp.cn/soft/sort01/sort02/down-12013.html
Accelerated C++  http://www.laixp.cn/soft/sort01/sort02/down-12004.html
高質量C++編程指南   這本書做爲很多公司的指導文章,我就不多說啦 
http://www.laixp.cn/soft/sort01/sort02/down-11216.html
改善既有代碼的設計 現在軟件越來越看重複用的,經常要對自己編寫的代碼優化優化再優化,要重構 
http://www.laixp.cn/soft/sort01/sort02/down-11214.html
stl源碼剖析 學會一個東西最好的方法就是看他源碼,這本書就是講解STL源碼的,看過之後相信你對STL有一個大概的瞭解 
http://www.laixp.cn/soft/sort01/sort02/down-11221.html
數據結構算法與應用-C++語言描述   C++算法的基礎教程 
http://www.laixp.cn/soft/sort01/sort02/down-11205.html
C++編程慣用法——高級程序員常用方法和技巧 看書名就知道啦 
http://www.laixp.cn/soft/sort01/sort02/down-11695.html
超越c++標準庫——boost程序庫導論   boost將成爲下一代C++標準庫的一部分,現在很多公司都使用這個,功能確實非常強大啊,筆者就非常喜歡結合泛型算法和boost庫,用幾行優美的代碼代替繁瑣的代碼編程 
http://www.laixp.cn/soft/sort01/sort02/down-11628.html
C++必知必會 本書描述了C++編程和設計中必須掌握但卻不易掌握的主題,這些主題涉及的範圍較廣,包括指針操作模板、泛型編程、異常處理、內存分配、設計模式等。 
http://www.laixp.cn/soft/sort01/sort02/down-11807.html
還有幾本書,我就不多作介紹了,大家有興趣可以自己去了解 
C++多範型設計  http://www.laixp.cn/soft/sort01/sort02/down-12209.html
C++代碼設計與重用  http://www.laixp.cn/soft/sort01/sort02/down-12207.html
C++ 設計新思維:範型編程與設計模式之應用 http://www.laixp.cn/soft/sort01/sort02/down-12198.html這本書我第一次看的時候,那個模板的運用讓我很震驚 
C++高級程序設計 - 徐惠民 http://www.laixp.cn/soft/sort01/sort02/down-12219.html
還有,我就不貼了,自己選擇合適自己的書看吧,祝願大家取得好的效果 
另附加說明一下:多年的C++編程經驗,有一點明白。剛學習C++的朋友,可能不知道該怎麼學,學那些東西比較重要。 
我認爲在C++實際應用中,1、業務和需求這個重要性排第一位 2、算法、編程風格排第二位 3、設計能力包括設計模式的理解 4、最後纔是語法等一些功能 
所以,學習要分清重點,我的建議是看幾本經典的C++書籍,看linux源代碼,這個我強烈推薦看,看不懂沒關係,看多了,對你的編程風格,編程技巧影響很大,終身受益!


====================================================================================

C++ 成長之路 

一、入門:溝通一個觀念,手敲代碼。
A、《C++程序設計》《C++Primer》等,學習語言基礎,手敲所有代碼,這是扎馬步,提升興趣、成就感,打下紮實的基礎,不再浮躁。
B、《高質量C/C++編程指南》《華爲編程規範》等,規範自己的代碼,養成對代碼的審美觀。
C、有步驟有講解的百例類的書,忘記書帶的光盤(把它貼到天花板上),敲所有的例子代碼,學會調試,瞭解VC都能幹什麼。
D、也可以看看視頻,比如孫鑫老師的,看看名家怎麼編程,怎麼用MSDN,如果你也能自己重新手敲一遍代碼,你會讓我很佩服。因爲視頻容易讓人浮躁,很難靜下心敲代碼。
二、入職:溝通一個觀念,學會解決問題。
A、MSDN
B、搜索引擎
C、CSDN、VCKBASE
D、codeproject。
如果你知道我在說什麼和爲什麼這麼排序,那麼恭喜你。
三、積累:總結知識,建立自己的知識庫。
A、總結自己遇到的問題,建立自己的知識庫和代碼庫,30秒內能查到。
B、總結自己的代碼,建立自己的高質量的複用模塊、框架。
四、學習:你選擇了編程,那就意味着不斷的學習。
A、每日讀書(這是我保持了近10年的習慣,近5年的速度爲每兩個月三本書),一年18本,大概千元左右吧,自己出或公司報銷都沒關係,值得。
B、掃街。掃CSDN的你需要的版塊,掃VCKBASE所有的代碼,掃Codeproject上所有你需要的內容,掃過後以後只掃更新。
五、提升:溝通一個觀念,大局觀和眼界
A、中小規模的開源代碼,你會看到框架、高質量的代碼、版本管理、測試機制。
B、結合你工作中的需要,分析項目的框架,模塊間接口,服務意識,提出自己更好的建議,剩下的事你自己想吧。
六、訓練:訓練自己辯證思維(好壞都想想),反向思維(別人認爲是壞事的,你就想這事是個好事,並舉出充分的理由來。別人都說好的,你就想如果哪裏做不好,可能就變成壞事),勇氣(感覺難的,面對它,困難就是紙老虎),邏輯思維,發散思維。相信我,這些是可以通過簡單的訓練達到一定的效果。

 

=====================================================================================

C++ Primer 4Th 中文版

Chapter 03

3.1 命名空間的using 聲明

3.2 標準庫string 類型

3.3 標準庫 vector 類型

3.4 迭代器簡介

3.5 標準庫 bitset 類型

 

    string 和 vector 往往將迭代器用作配套類型(companion type)。這些標準庫類型是語言組成部分中更基本的那些數據類型(如數組和指針)的抽象。

    標準庫類型bitset, 提供了一種抽象方法來操作位的集合。

    Chapter 4  討論數組和指針,Chapter 5 講述內置位操作符。

    Chapter 2 涉及的數值或字符類型都是低級數據類型。C++ 標準庫定義了更高級的抽象數據類型(abstract data type)。

    string 類型支持長度可變的字符串,vector 可用於保存一組指定類型的對象。另一種標準庫類型提供了更方便和合理有效的語言級的抽象設施,它就是bitset 類。

3.1 命名空間的 using 聲明

    using 聲明,使用using 聲明可以在不需要加前綴namespace_name :: 的情況下訪問命名空間中的名字。

 1. 每個名字都需要一個 using 聲明

    2. 使用標準庫類型的類定義

3.2 標準庫string 類型

3.2.1 string 對象的定義和初始化

 


3.2.2 String 對象的讀寫

// Note: #include and using declarations must be added to compile this code

int main()

{   

     string s;   //empty string

     cin>>s;    //read whitespace-separated string into s

     cout<<s<<endl;   //write s to the output

     return 0;

}

 

 


     1. 讀入未知數目的 string 對象

    int main()

{

      string word;

     // read until end-of-file,writing each word to a new line

    while(cin>>word)

         cout<<word<<endl;

     return 0;

}   

 

===============================================================================

成爲跨平臺的C++

最近看到javaeye 上的壇友,想達到 
“有勇氣說自己會c++,標準c++,而且能跨平臺” 這樣的目標。身邊有不少想學習C++的朋友,就這個問題,說說我的理解
跨平臺的C++程序員也曾是我的目標,不過多年來,我只有在windows和 unix 下的開發經驗,所我的經驗來自於這兩大平臺。

帶具體任務進行學習

如果沒有具體的任務做爲目標,你的學習將沒有效率可言,並且知識都本都停留在書面上,過段時間,你又基本上都忘記。
因此在學習C++過程要不斷給自
己設定任務。 並且將這個任務不斷非富,不斷重構
。 
以下我舉例來說明:

編寫雙人對弈的五子棋 ver 1.0

在unix下使用GCC  + MAKE +  VIM (跨平臺的編輯器) 
來完成這個任務,熟悉C++的基本語法,學習使有類或者結構來表達領域的概念。在這個期間儘可能的少用庫(除非不得已),界面顯示是次要問題,在控制檯上
顯示即可。
達到標準: 五子棋可以雙人對弈,源代碼有信心給人看, 基本符合代碼大全的標準 : )
目的:  GNU下的開發環境,  C++ 程序對 類、指針、基本算法、內存管理問題 的學習。

五子棋 ver 2.0 (重構 ver 1.0)

自己學習模版、STL 以及 Boost  然後來重構之前的 ver 1.0 版本。 儘可能的使用STL, 使用boost  的 
smarty 智能支持來管理內存。
達到標準: 程序代碼行數要減少至原來的 50% 以下。
目的: 對泛型抽象及模板技術的初步學習以及熟悉 STL 庫和 BOOST 庫

五子棋 ver 3.0  (增加對弈結果保存以及覆盤的功能)

加上以上兩個功能,需要做不少的工作。要考慮各種外部資源不滿足的情況。
達到標準: 功能上滿足要求, 並且能實現破壞性測試( 存盤文件不存大, 棋局文件內容錯誤)
目的:     數據保存、對象序列化、  異常、異常安全、外部資源管理的學習

五子棋 ver 4.0  (支持網絡對戰)

學習網絡編譯,基於TCP來實現

五子棋 ver 5.0  (支持與電腦對戰)

進行算法的學習,提供人工智能能力,並有難度級別

五子棋 ver 6.0  (提供可操作的界面)

可操作的界面,可以是windows 下的, 也可以是linux  還可以考慮與python 結合 學習混合編程。 另外這個隻影響界面層的代碼。
達到以上6個版本,你已經是一個跨平臺的標準C++的程序員,以後完全可以自己來解決C++領域的大部份問題。 另外你的這個作品,對於找工作來說,已是利器,無往而不勝

在學習過程注意幾點:
除了版本1.0 和 6.0 外,程序要儘可能的使用標準庫,跨平臺的庫
放棄使用便捷的IDE,  在unix 下   vim + gcc + gdb + make   纔是C++開發的主流. 


有選擇的閱讀
C++ 書藉非常之多, 其它如設計領域、網絡編程、多線程多進程編程、界面開發 等資料十在是太多。你無法全部讀完,還是有選擇的來閱讀。 
書一定要區分這書是手冊類型的,還是系統理論型
的。
前者在需要時查就可以,後者則需要精讀,有了實戰後再讀。
推薦幾本需要精讀的書


《深入理解計算機系統》
《C++ 程序設計語言》
《代碼大全》
《C++ 語言的設計和演化》
《C++ Templates 中文版》
《unix環境高級編程》

 ============================================================================

C/C++ 頭文件 常識

C/C++ 頭文件 常用頭文件功能查詢表 
#include <assert.h> //設定插入點 
#include <ctype.h> //字符處理 
#include <errno.h> //定義錯誤碼 
#include <float.h> //浮點數處理 
#include <fstream.h> //文件輸入/輸出 
#include <iomanip.h> //參數化輸入/輸出 
#include <iostream.h> //數據流輸入/輸出 
#include <limits.h> //定義各種數據類型最值常量 
#include <locale.h> //定義本地化函數 
#include <math.h> //定義數學函數 
#include <stdio.h> //定義輸入/輸出函數 
#include <stdlib.h> //定義雜項函數及內存分配函數 
#include <string.h> //字符串處理 
#include <strstrea.h> //基於數組的輸入/輸出 
#include <time.h> //定義關於時間的函數 
#include <wchar.h> //寬字符處理及輸入/輸出 
#include <wctype.h> //寬字符分類 
////////////////////////////////////////////////////////////////////////// 
標準 C++ (同上的不再註釋) 
#include <algorithm> //STL 通用算法 
#include <bitset> //STL 位集容器 
#include <cctype> 
#include <cerrno> 
#include <clocale> 
#include <cmath> 
#include <complex> //複數類 
#include <cstdio> 
#include <cstdlib> 
#include <cstring> 
#include <ctime> 
#include <deque> //STL 雙端隊列容器 
#include <exception> //異常處理類 
#include <fstream> 
#include <functional> //STL 定義運算函數(代替運算符) 
#include <limits> 
#include <list> //STL 線性列表容器 
#include <map> //STL 映射容器 
#include <iomanip> 
#include <ios> //基本輸入/輸出支持 
#include <iosfwd> //輸入/輸出系統使用的前置聲明 
#include <iostream> 
#include <istream> //基本輸入流 
#include <ostream> //基本輸出流 
#include <queue> //STL 隊列容器 
#include <set> //STL 集合容器 
#include <sstream> //基於字符串的流 
#include <stack> //STL 堆棧容器 
#include <stdexcept> //標準異常類 
#include <streambuf> //底層輸入/輸出支持 
#include <string> //字符串類 
#include <utility> //STL 通用模板類 
#include <vector> //STL 動態數組容器 
#include <cwchar> 
#include <cwctype> 
using namespace std; 
////////////////////////////////////////////////////////////////////////// 
C99 增加 
#include <complex.h> //複數處理 

頭文件最主要的功能是起到聲明作用,比如說,在某個類中,你要用到如下頭文件: 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <strstrea.h> 
你就可以自定義一個頭文件,然後把這些頭文件放到自定義的頭文件中,然後在那個類開頭包含自定義的頭文件就行了,不需要再寫以上頭文件,這樣就使代碼顯得簡練易懂.

c++裏面的類,函數,變量都有聲明和定義的區別 
在用到一個類或函數或變量之前,必須進行聲明,但可以在之後定義。 
比如 
//聲明go 
int go(); 
int main() { 
go(); 

int go() { 
cout << "go"; 

如果沒有之前的go的聲明,在main中調用是會出錯的 
但把所有的聲明都放在文件的開頭會比較麻煩,而且,如果go這個函數在其他的文件中要用到時,在其他的文件裏面也要對go()進行聲明 
//2.cpp 
//聲明go 
int go(); 
int haha() { 
go(); 

這樣在文件很多時容易出錯。 
所以,我們就把所有的聲明,如go的聲明放在一個文件中, 比如1.h. 
這樣,在2.cpp裏面,只要#include "1.h",就可以直接調用go了 
如果一個文件,如1.cpp裏面有30幾個函數,我們把這些函數的聲明都放在1.h裏面,別的文件,如2.cpp要用這些函數,只要include一下1.h就行了,十分方便 
總之 
頭文件裏面放的就是各種各樣的聲明

 

【C++著名程序庫的比較和學習經驗】

C++著名程序庫的比較和學習經驗 

C++著名程序庫的比較和學習經驗(轉自校內,雖然不是搞C++的,但瞭解一些基礎的還是很有必要)1、C++各大有名庫的介紹——C++標準庫 
2、C++各大有名庫的介紹——準標準庫Boost 
3、C++各大有名庫的介紹——GUI 
4、C++各大有名庫的介紹——網絡通信 
5、C++各大有名庫的介紹——XML 
6、C++各大有名庫的介紹——科學計算 
7、C++各大有名庫的介紹——遊戲開發 
8、C++各大有名庫的介紹——線程 
9、C++各大有名庫的介紹——序列化 
10、C++各大有名庫的介紹——字符串 
11、C++各大有名庫的介紹——綜合 
12、C++各大有名庫的介紹——其他庫 
13、C++名人的網站 
在 C++中,庫的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了設計庫來擴充功能要好過設計更多的語法的言論。現實中,C++的庫門類繁多,解決的問題也是極其廣泛,庫從輕量級到重 量級的都有。不少都是讓人眼界大開,亦或是望而生嘆的思維傑作。由於庫的數量非常龐大,而且限於筆者水平,其中很多並不瞭解。所以文中所提的一些庫都是比 較著名的大型庫。 
1、C++各大有名庫的介紹——C++標準庫 標準庫中提供了C++程序的基本設施。雖然C++標準庫隨着C++標準折騰了許多年,直到標準的出臺才正式定型,但是在標準庫的實現上卻很令人欣慰得看到多種實現,並且已被實踐證明爲有工業級別強度的佳作。 
1.1、Dinkumware C++ Library
參考站點:http://www.dinkumware.com/ 
P.J. Plauger編寫的高品質的標準庫。P.J. Plauger博士是Dr. Dobb's程序設計傑出獎的獲得者。其編寫的庫長期被Microsoft採用,並且最近Borland也取得了其OEM的license,在其 C/C++的產品中採用Dinkumware的庫。
1.2、RogueWave Standard C++ Library
參考站點:http://www.roguewave.com/ 
這個庫在Borland C++ Builder的早期版本中曾經被採用,後來被其他的庫給替換了。筆者不推薦使用。
1.3、SGI STL
參考站點:http://www.roguewave.com/ 
SGI公司的C++標準模版庫。
1.4、STLport
參考站點:http://www.stlport.org/ 
SGI STL庫的跨平臺可移植版本。
2、C++各大有名庫的介紹——準標準庫Boost 
Boost庫是一個經過千錘百煉、可移植、提供源代碼的C++庫,作爲標準庫的後備,是C++標準化進程的發動機之一。 Boost庫由C++標準委員會庫工作組成員發起,在C++社區中影響甚大,其成員已近2000人。 Boost庫爲我們帶來了最新、最酷、最實用的技術,是不折不扣的“準”標準庫。 Boost中比較有名氣的有這麼幾個庫:
2.1 Regex  正則表達式庫
2.2 Spirit   LL parser framework,用C++代碼直接表達EBNF
2.3 Graph  圖組件和算法
2.4 Lambda  在調用的地方定義短小匿名的函數對象,很實用的functional功能
2.5 concept check   檢查泛型編程中的concept
2.6 Mpl   用模板實現的元編程框架
2.7 Thread   可移植的C++多線程庫
2.8 Python   把C++類和函數映射到Python之中
2.9 Pool    內存池管理
2.10 smart_ptr   5個智能指針,學習智能指針必讀,一份不錯的參考是來自CUJ的文章:
Smart Pointers in Boost,哦,這篇文章可以查到,CUJ是提供在線瀏覽的。中文版見筆者在《Dr.Dobb's Journal軟件研發雜誌》第7輯上的譯文。
Boost總體來說是實用價值很高,質量很高的庫。並且由於其對跨平臺的強調,對標準C++的強調,是編寫平臺無關,現代C++的開發者必備的 工具。但是Boost中也有很多是實驗性質的東西,在實際的開發中實用需要謹慎。並且很多Boost中的庫功能堪稱對語言功能的擴展,其構造用盡精巧的手 法,不要貿然的花費時間研讀。Boost另外一面,比如Graph這樣的庫則是具有工業強度,結構良好,非常值得研讀的精品代碼,並且也可以放心的在產品 代碼中多多利用。
參考站點:http://www.boost.org 
3、C++各大有名庫的介紹——GUI 
在衆多C++的庫中,GUI部分的庫算是比較繁榮,也比較引人注目的。在實際開發中,GUI庫的選擇也是非常重要的一件事情,下面我們綜述一下可選擇的GUI庫,各自的特點以及相關工具的支持。 3.1、MFC
大名鼎鼎的微軟基礎類庫(Microsoft Foundation Class)。大凡學過VC++的人都應該知道這個庫。雖然從技術角度講,MFC是不大漂亮的,但是它構建於Windows API 之上,能夠使程序員的工作更容易,編程效率高,減少了大量在建立 Windows 程序時必須編寫的代碼,同時它還提供了所有一般 C++ 編程的優點,例如繼承和封裝。MFC 編寫的程序在各個版本的Windows操作系統上是可移植的,例如,在Windows 3.1下編寫的代碼可以很容易地移植到 Windows NT 或 Windows 95 上。但是在最近發展以及官方支持上日漸勢微。
3.2、QT
參考網站:http://www.trolltech.com 
Qt是Trolltech公司的一個多平臺的C++圖形用戶界面應用程序框架。它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所用功 能。Qt是完全面向對象的很容易擴展,並且允許真正地組件編程。自從1996年早些時候,Qt進入商業領域,它已經成爲全世界範圍內數千種成功的應用程序 的基礎。Qt也是流行的Linux桌面環境KDE 的基礎,同時它還支持Windows、Macintosh、Unix/X11等多種平臺。[wangxinus注:QT目前已經是Nokia旗下的產品,原官方網站已經失效,目前爲http://qt.nokia.com.2009年初發布的Qt4.5版本開始使用LGPL協議,諾基亞希望以此來吸引更多的開發人員使用Qt庫]
3.3、WxWindows
參考網站:http://www.wxwindows.org 
跨平臺的GUI庫。因爲其類層次極像MFC,所以有文章介紹從MFC到WxWindows的代碼移植以實現跨平臺的功能。通過多年的開發也是一個日趨完善的GUI庫,支持同樣不弱於前面兩個庫。並且是完全開放源代碼的。新近的C++ Builder X的GUI設計器就是基於這個庫的。[wangxinus注:迫於微軟的施壓,已經由WxWindows更名爲wxWidgets]
3.4、Fox
參考網站:http://www.fox-toolkit.org/ 
開放源代碼的GUI庫。作者從自己親身的開發經驗中得出了一個理想的GUI庫應該是什麼樣子的感受出發,從而開始了對這個庫的開發。有興趣的可以嘗試一下。
3.5、WTL
基於ATL的一個庫。因爲使用了大量ATL的輕量級手法,模板等技術,在代碼尺寸,以及速度優化方面做得非常到位。主要面向的使用羣體是開發COM輕量級供網絡下載的可視化控件的開發者。
3.6、GTK
參考網站:http://gtkmm.sourceforge.net/ 
GTK是一個大名鼎鼎的C的開源GUI庫。在Linux世界中有Gnome這樣的殺手應用。而Qt就是這個庫的C++封裝版本。[wangxinus注:“Qt 就是這個庫的C++封裝版本”是錯誤的。Qt早於GTK,最初Qt由於協議的原因引起社區的不滿,另外開發了一個基於C語言的GTK庫,後面的擴展版本爲 GTK+。GTK+的Gnome和Qt的KDE是目前linux桌面的兩大陣營,曾有水火不容之勢。目前雙方都以及開源社區的精神,已經和解。]
4、C++各大有名庫的介紹——網絡通信 
4.1、ACE
參考網站:http://www.cs.wustl.edu/~schmidt/ACE.html 
C++庫的代表,超重量級的網絡通信開發框架。ACE自適配通信環境(Adaptive Communication Environment)是可以自由使用、開放源代碼的面向對象框架,在其中實現了許多用於併發通信軟件的核心模式。ACE提供了一組豐富的可複用C++ 包裝外觀(Wrapper Facade)和框架組件,可跨越多種平臺完成通用的通信軟件任務,其中包括:事件多路分離和事件處理器分派、信號處理、服務初始化、進程間通信、共享內存管理、消息路由、分佈式服務動態(重)配置、併發執行和同步,等等。
4.2、StreamModule
參考網站:http://www.omnifarious.org/StrMod 
設計用於簡化編寫分佈式程序的庫。嘗試着使得編寫處理異步行爲的程序更容易,而不是用同步的外殼包起異步的本質。
4.3、SimpleSocket
參考網站:http://home.hetnet.nl/~lcbokkers/simsock.htm 
這個類庫讓編寫基於socket的客戶/服務器程序更加容易。
4.4、A Stream Socket API for C++
參考網站:http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html 
又一個對Socket的封裝庫。
5、C++各大有名庫的介紹——XML 
5.1、Xerces
參考網站:http://xml.apache.org/xerces-c/ 
Xerces-C++ 是一個非常健壯的XML解析器,它提供了驗證,以及SAX和DOM API。XML驗證在文檔類型定義(Document Type Definition,DTD)方面有很好的支持,並且在2001年12月增加了支持W3C XMLSchema 的基本完整的開放標準。
5.2、XMLBooster
參考網站:http://www.xmlbooster.com/ 
這個庫通過產生特製的parser的辦法極大的提高了XML解析的速度,並且能夠產生相應的GUI程序來修改這個parser。在DOM和SAX兩大主流XML解析辦法之外提供了另外一個可行的解決方案。
5.3、Pull Parser
參考網站:http://www.extreme.indiana.edu/xgws/xsoap/xpp 
這個庫採用pull方法的parser。在每個SAX的parser底層都有一個pull的parser,這個xpp把這層暴露出來直接給大家使用。在要充分考慮速度的時候值得嘗試。
5.4、Xalan
參考網站:http://xml.apache.org/xalan-c/ 
Xalan是一個用於把XML文檔轉換爲HTML,純文本或者其他XML類型文檔的XSLT處理器。
5.5、CMarkup
參考網站:http://www.firstobject.com/xml.htm 
這是一種使用EDOM的XML解析器。在很多思路上面非常靈活實用。值得大家在DOM和SAX之外尋求一點靈感。
5.6、libxml++
http://libxmlplusplus.sourceforge.net/ 
libxml++是對著名的libxml XML解析器的C++封裝版本。
5.7. TinyXML [wangxinus注:一個非常小巧的XML解析庫,基於DOM的。]
6、C++各大有名庫的介紹——科學計算 
6.1、Blitz++
參考網站:http://www.oonumerics.org/blitz 
Blitz++ 是一個高效率的數值計算函數庫,它的設計目的是希望建立一套既具像C++ 一樣方便,同時又比Fortran速度更快的數值計算環境。通常,用C++所寫出的數值程序,比 Fortran慢20%左右,因此Blitz++正是要改掉這個缺點。方法是利用C++的template技術,程序執行甚至可以比Fortran更快。
Blitz++目前仍在發展中,對於常見的SVD,FFTs,QMRES等常見的線性代數方法並不提供,不過使用者可以很容易地利用Blitz++所提供的函數來構建。
6.2、POOMA
參考網站:http://www.codesourcery.com/pooma/pooma 
POOMA是一個免費的高性能的C++庫,用於處理並行式科學計算。POOMA的面向對象設計方便了快速的程序開發,對並行機器進行了優化以達到最高的效率,方便在工業和研究環境中使用。
6.3、MTL
參考網站:http://www.osl.iu.edu/research/mtl 
Matrix Template Library(MTL)是一個高性能的泛型組件庫,提供了各種格式矩陣的大量線性代數方面的功能。在某些應用使用高性能編譯器的情況下,比如Intel的編譯器,從產生的彙編代碼可以看出其與手寫幾乎沒有兩樣的效能。
6.4、CGAL
參考網站:www.cgal.org 
Computational Geometry Algorithms Library的目的是把在計算幾何方面的大部分重要的解決方案和方法以C++庫的形式提供給工業和學術界的用戶。
7、C++各大有名庫的介紹——遊戲開發 
7.1、Audio/Video 3D C++ Programming Library
參考網站:http://www.galacticasoftware.com/products/av/ 
AV3D是一個跨平臺,高性能的C++庫。主要的特性是提供3D圖形,聲效支持(SB,以及S3M),控制接口(鍵盤,鼠標和遙感),XMS。
7.2、KlayGE
參考網站:http://home.g365.net/enginedev/ 
國內遊戲開發高手自己用C++開發的遊戲引擎。KlayGE是一個開放源代碼、跨平臺的遊戲引擎,並使用Python作腳本語言。KlayGE在LGPL協議下發行。感謝龔敏敏先生爲中國遊戲開發事業所做出的貢獻。
[wangxinus注:這個庫國人瞭解很少,百度百科的KlayGE詞條還是本人創建的。一個人開發一個遊戲引擎庫,是在讓筆者汗顏,對作者表示欽佩!]
7.3、OGRE
參考網站:http://www.ogre3d.org 
OGRE(面向對象的圖形渲染引擎)是用C++開發的,使用靈活的面向對象3D引擎。它的目的是讓開發者能更方便和直接地開發基於3D硬件設備 的應用程序或遊戲。引擎中的類庫對更底層的系統庫(如:Direct3D和OpenGL)的全部使用細節進行了抽象,並提供了基於現實世界對象的接口和其 它類。
8、C++各大有名庫的介紹——線程 
8.1、C++ Threads
參考網站:http://threads.sourceforge.net/ 
這個庫的目標是給程序員提供易於使用的類,這些類被繼承以提供在Linux環境中很難看到的大量的線程方面的功能。
8.2、ZThreads
參考網站:http://zthread.sourceforge.net/ 
一個先進的面向對象,跨平臺的C++線程和同步庫。
9、C++各大有名庫的介紹——序列化 
9.1、s11n
參考網站:http://s11n.net/ 
一個基於STL的C++庫,用於序列化POD,STL容器以及用戶定義的類型。
9.2、Simple XML Persistence Library
參考網站:http://sxp.sourceforge.net/ 
這是一個把對象序列化爲XML的輕量級的C++庫。
10、C++各大有名庫的介紹——字符串 
10.1、C++ Str Library
參考網站:http://www.utilitycode.com/str/ 
操作字符串和字符的庫,支持Windows和支持gcc的多種平臺。提供高度優化的代碼,並且支持多線程環境和Unicode,同時還有正則表達式的支持。
10.2、Common Text Transformation Library
參考網站:http://cttl.sourceforge.net/ 
這是一個解析和修改STL字符串的庫。CTTL substring類可以用來比較,插入,替換以及用EBNF的語法進行解析。
10.3、GRETA
參考網站:http://research.microsoft.com/projects/greta/ 
這是由微軟研究院的研究人員開發的處理正則表達式的庫。在小型匹配的情況下有非常優秀的表現。
11、C++各大有名庫的介紹——綜合 
11.1、P::Classes
參考網站:http://pclasses.com/ 
一個高度可移植的C++應用程序框架。當前關注類型和線程安全的signal/slot機制,i/o系統包括基於插件的網絡協議透明的i/o架構,基於插件的應用程序消息日誌框架,訪問sql數據庫的類等等。
11.2、ACDK - Artefaktur Component Development Kit
參考網站:http://acdk.sourceforge.net/ 
這是一個平臺無關的C++組件框架,類似於Java或者.NET中的框架(反射機制,線程,Unicode,廢料收集,I/O,網絡,實用工具,XML,等等),以及對Java, Perl, Python, TCL, Lisp, COM 和 CORBA的集成。
11.3、dlib C++ library
參考網站:http://www.cis.ohio-state.edu/~kingd/dlib/ 
各種各樣的類的一個綜合。大整數,Socket,線程,GUI,容器類,以及瀏覽目錄的API等等。
11.4、Chilkat C++ Libraries
參考網站:http://www.chilkatsoft.com/cpp_libraries.asp 
這是提供zip,e-mail,編碼,S/MIME,XML等方面的庫。
11.5、C++ Portable Types Library (PTypes)
參考網站:http://www.melikyan.com/ptypes/ 
這是STL的比較簡單的替代品,以及可移植的多線程和網絡庫。
11.6、LFC
參考網站:http://lfc.sourceforge.net/ 
哦,這又是一個嘗試提供一切的C++庫
12、C++各大有名庫的介紹——其他庫 
12.1、Loki
參考網站:http://www.moderncppdesign.com/ 
哦,你可能抱怨我早該和Boost一起介紹它,一個實驗性質的庫。作者在loki中把C++模板的功能發揮到了極致。並且嘗試把類似設計模式這樣思想層面的東西通過庫來提供。同時還提供了智能指針這樣比較實用的功能。
12.2、ATL
ATL(Active Template Library)是一組小巧、高效、靈活的類,這些類爲創建可互操作的COM組件提供了基本的設施。
12.3、FC++: The Functional C++ Library
這個庫提供了一些函數式語言中才有的要素。屬於用庫來擴充語言的一個代表作。如果想要在OOP之外尋找另一分的樂趣,可以去看看函數式程序設計的世界。大師Peter Norvig在 “Teach Yourself Programming in Ten Years”一文中就將函數式語言列爲至少應當學習的6類編程語言之一。
12.4、FACT!
參考網站:http://www.kfa-juelich.de/zam/FACT/start/index.html 
另外一個實現函數式語言特性的庫
12.5、Crypto++
提供處理密碼,消息驗證,單向hash,公匙加密系統等功能的免費庫。
還有很多非常激動人心或者是極其實用的C++庫,限於我們的水平以及文章的篇幅不能包括進來。在對於這些已經包含近來的庫的介紹中,由於並不是每一個我們都使用過,所以難免有偏頗之處,請讀者見諒。
13、C++名人的網站 
正如我們可以通過計算機歷史上的重要人物瞭解計算機史的發展,C++相關人物的網站也可以使我們得到最有價值的參考與借鑑,下面的人物我們認爲沒 有介紹的必要,只因下面的人物在C++領域的地位衆所周知,我們只將相關的資源進行羅列以供讀者學習,他們有的工作于貝爾實驗室,有的工作於知名編譯器廠 商,有的在不斷推進語言的標準化,有的爲讀者撰寫了多部千古奇作…… 
1、Bjarne Stroustrup
http://www.research.att.com/~bs/ 
2、Stanley B. Lippman
http://blogs.msdn.com/slippman/ (中文版)
http://www.zengyihome.net/slippman/index.htm 
3、Scott Meyers
http://www.aristeia.com/ 
4、David Musser
http://www.cs.rpi.edu/~musser/ 
5、Bruce Eckel
http://www.bruceeckel.com 
http://blog.csdn.net/beckel Bruce Eckel 博客中文版
6、Nicolai M. Josuttis
http://www.josuttis.com/ 
7、Herb Sutter
http://www.gotw.ca/ 
http://blog.csdn.net/hsutter/ Herb Sutter 中文博客
8、Andrei Alexandrescu

http://www.moderncppdesign.com

 

 

===============================================================

C++的類和結構體的不同點 

C++是面向對象的語言,中心就是對象,而類就是對象的抽象。可以把屬性和方法都寫在類裏。

C語言是結構化語言,中心是方法,結構體只包含屬性而不會有方法。

C++類和結構體概念基本一致,區別是C++中類成員默認訪問是private,結構體是public

C中結構體就是結構體,只有數據成員,不能有成員函數。

首先,要確認的一點是C中的struct通過函數指針來調用函數,但函數指針不同於成員函數。之所以有這個問題,是因爲C++中的struct已經基本具備“類”的功能,可以有成員函數,且struct具有繼承屬性。

c++中struct與class除了關鍵字不同之外,更重要的是成員控制權限的差異,目前瞭解的僅此而已。

代碼就是王道:

成員變量的默認訪問權限不同——struct默認爲public,而class默認爲private

#include<iostream>

#include<stdio.h>

#include<malloc.h>

#include<string.h>

using namespace std;

enum Breed {SHIZIGOU,JUANMAOGOU,MUYANGQUAN};

struct Mamal

{

private: int age;

public :

void speak()

{cout<<"speaking"<<endl;}

void sleep()

{cout<<"sleeping"<<endl;}

Mamal():age(4) {}

~Mamal(){}

};

struct Dog:public Mamal

{

int a;

private: Breed dogbreed;

public :

Dog():dogbreed(SHIZIGOU),a(3){}

~Dog(){}

void getdogbreed()

{cout<<dogbreed<<endl;}

};

int main()

{

   Dog dd;

   dd.speak();         //訪問基類的成員函數

   dd.getdogbreed();           //必須通過公有接口訪問私有成員

   cout<<dd.a<<endl;     //成員a

.................

}

=============================================

 關於隱含指針---- this 指針

 

1) this 指針是一個隱含於每一個類的成員函數或構造函數或析構函數中的特殊指針。它用於指向正在被成員函數或構造函數或析構函數操作的對象。
2) this指針指向的是一個類的對象,而且指向的是當前實例化的對象。
3) 當定義一個類的對象(或叫實例),系統(編譯器)將該對象的地址賦給this 指針。
4) 每次成員函數(包括構造函數、析構函數)被調用時,都會給調用它的對象傳遞一個指針,這個指針的名字叫做 this 指針。
5) this 指針對於我們來說是不可見的,因爲它自動地即隱式地傳遞。
6) this 指針的句法 類似其他指針的句法,唯一的不同點就是在於 this 指針不需要聲明,因爲它能有操作系統自動地生成。它僅僅從類的成員函數(包括構造函數、析構函數)中返回類成員的內存地址。

//~~~~~~~~~~~~~~~~~華麗分割線~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

下面是兩個示例:
#include <iostream>
using namespace std;

class Point
{
   public:
      Point(int xx = 0, int yy = 0) { X = xx ;  Y = yy ;}
//   Point ( int xx = 0, int yy = 0) { this -> X = xx ;  this -> Y = yy ;}
      int GetX() { return  X ; }
      int GetY() { return Y ; }
  private:
       int X , Y ;
};

int main()
{
    Point A(4 , 5);
    Point *p1;
    p1 = & A;
    cout << p1 -> GetX() << endl;
    cout << A.GetX() << endl;
}

//~~~~~~~~~~~~~~~~~華麗分割線~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#include <iostream>
using namespace std;

class Base
{
  public:
    Base *pointer;
  public:
    Base()
  {
    pointer = this;
  }
  virtual void output()  {  cout<<"output Base!"<< endl ; }
 //  void output() { cout << "output Base! "<< endl; }
};

class Derive:public Base
{
public:
 void output()
 {
    cout<<"output derive!"<<endl;
 }
};

void main()
{
 Base Base_variable;   
 Base_variable.pointer->output(); 

 Derive Derive_variable;  
 Derive_variable.pointer->output();  
}
this指針指向的是一個類的對象,而且指向的是當前實例化的對象。我們先看看main()函數中,我們總共構造了兩個對象,一個是基類的對象Base_variable,一個是派生類的對象Derive_variable。我們再看看基類中的構造函數Base()什麼時候會被調用呢?很明顯,構造一個基類對象和構造一個派生類對象時都會調用。 

在我們構造基類對象Base_variable時,this指針指向這個對象,所以pointer也會指向這個對象,所以調用的output()函數是基類中的output()函數。而我們構造派生類對象Derive_variable時,this指針指向這個對象,所以調用的output()函數是派生類中的output()函數。

 //~~~~~~~~~~~~~~~~~華麗分割線~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 下面是百度百科的內容 (更新於2012-06-07日)

1) this指針的用處:
一個對象的this指針並不是對象本身的一部分,不會影響sizeof(對象)的結果。this作用域是在類內部,當在類的非靜態成員函數中訪問類的非靜態成員的時候,編譯器會自動將對象本身的地址作爲一個隱含參數傳遞給函數。也就是說,即使你沒有寫上this指針,編譯器在編譯的時候也是加上this的,它作爲非靜態成員函數的隱含形參,對各成員的訪問均通過this進行。   

例如,調用date.SetMonth(9) <===> SetMonth(&date, 9),this幫助完成了這一轉換 。
2) this指針的使用:
一種情況就是,在類的非靜態成員函數中返回類對象本身的時候,直接使用 return *this;另外一種情況是當參數與成員變量名相同時使用this指針,如this->n = n (不能寫成n = n)。

3) this指針程序示例:
this指針是類的一個自動生成、自動隱藏的私有成員,它存在於類的非靜態成員函數中,指向被調用函數所在的對象的地址。全局僅有一個this指針,當一個對象被創建時,this指針就指向對象數據的首地址。根據以下程序來說明this指針  

#include<iostream>   
using namespace std;   

class Point   

 private:   
     int x, y ;   
 public:   
     Point(int a, int b) { x=a; y=b;}   
     void MovePoint( int a, int b){ x+=a; y+=b;}   
     void print(){ cout<<"x="<<x<<"y="<<y<<endl;}   
};   

void main( )   
{   
  Point point1( 10,10);   
  point1.MovePoint(2,2);   
  point1.print( );   
}   

當對象point1調用MovePoint(2,2)函數時,即將point1對象的地址傳遞給了this指針。MovePoint函數的原型應該是 void MovePoint( Point *this, int a, int b);第一個參數是指向該類對象的一個指針,我們在定義成員函數時沒看見是因爲這個參數在類中是隱含的。這樣point1的地址傳遞給了this,所以在MovePoint函數中便顯式的寫成:void MovePoint(int a, int b) { this->x +=a; this-> y+= b;} 即可以知道,point1調用該函數後,也就是point1的數據成員被調用並更新了值。

4) 關於this指針的一個經典回答:
當你進入一個房子後,   
你可以看見桌子、椅子、地板等,  
但是房子你是看不到全貌了。  
對於一個類的實例來說,  
你可以看到它的成員函數、成員變量,  
但是實例本身呢?  
this是一個指針,它時時刻刻指向你這個實例本身。

============================================================

 

C++ Primer 4Th 中文版 P769 

Chapter 01 快速入門

Chapter 02 變量和基本類型 

Chapter 03 標準庫類型

Chapter 04 數組和指針

Chapter 05 表達式

Chapter 06 語句

Chapter 07 函數

Chapter 08 標準IO庫

Chapter 09 順序容器

Chapter 10 關聯容器

Chapter 11 泛型算法

Chapter 12 類

Chapter 13 複製控制

Chapter 14 重載操作符與轉換

Chapter 15 面向對象編程

Chapter 16 模板與泛型編程

Chapter 17 用於大型程序的工具

Chapter 18 特殊工具與技術

========================================

http://www.awprofessional.com/cpp_primer下載源代碼

Source Code 

Download the source code files related to this book.

Source code(packaged for Windows systems using Microsoft Visual Studio.NET). Please note, the code requires Microsoft compiler Version 7.0 or later.

Source code(packaged for Unix and similar systems, tar file compressed with gzip). Please note the code was compiled using g++ version 3.2 or later.

 

 

Visual Studio 2010 Ultimate Version 10.0.30319.1 RTMRel   2010 Microsoft Corporation All rights reserved.

Microsoft .Net Framework Version 4.0.30319 RTMRel    2010 Microsoft Corporation All rights reserved.

 

 

 

 http://www.geekpedia.com

====================================

1.C++  程序設計語言(特別版) 作者 : [美] Bjarne Stroustrup 貝爾實驗室   出版社 : 機械工業出版社

2.C++語言的設計和演化  作者 : [美] Bjarne Stroustrup     出版社 : 機械工業出版社 

3.C++ Templates  中文版  作者 : David Vandevoorde/Nicolai M.Josuttis  出版社 : 人民郵電出版社

4.C++設計新思維(泛型編程與設計模式之應用)作者 : (美)Andrei Alexandrescu  出版社 : 華中科技大學出版社

5.C++ 編程規範 作者 : 薩特,亞歷山德雷斯庫 著,劉基誠 譯   出版社 : 人民郵電出版社

6.深入理解計算機系統(修訂版)作者 : Randal E.Bryant/David O'Hallaron

7. 代碼大全(第2版)作者 : [美] 史蒂夫·邁克康奈爾
8.UNIX 環境高級編程(第2版) 作者 : W.Richard Stevens/Stephen A.Rago

9. Effective C++ 改善程序與設計的55個具體做法(中文 3th) 作者 : Scott Meyers

======================================================================

C/C++ 之旅程

Windows C 程序設計入門與提高

http://download.chinaitlab.com/program/files/13246.html

單片機C語言入門

http://download.chinaitlab.com/program/files/12907.html

C++ 入門基礎教程

http://download.chinaitlab.com/program/files/7617.html

C語言常用算法源代碼

http://download.chinaitlab.com/program/files/12893.html

C常用算法程序集

http://download.chinaitlab.com/program/files/6225.html

C++ 語言命令詳解

http://download.chinaitlab.com/program/files/4556.html

C語言編程要點

http://download.chinaitlab.com/program/files/11823.html

C語言編程基礎

http://download.chinaitlab.com/program/files/11074.html

Borland c++使用手冊

http://download.chinaitlab.com/program/files/4553.html

C語言數值算法程序大全(第二版)

http://download.chinaitlab.com/program/files/9247.html

Borland c++4.0安裝與使用

http://download.chinaitlab.com/program/files/4546.html

C++ Builder 5.0經典入門

http://download.chinaitlab.com/program/files/4438.html

非C程序員C++入門自學教程

http://download.chinaitlab.com/program/files/3924.html

C語言常用函數手冊

http://download.chinaitlab.com/program/files/1818.html

C++標準程序庫自修教程與參考手冊

http://download.chinaitlab.com/program/files/12644.html

C/C++指令字典

http://download.chinaitlab.com/program/files/13237.html

C語言圖形函數介紹

http://download.chinaitlab.com/program/files/11643.html

C語言數值計算初步

http://download.chinaitlab.com/program/files/11640.html

C++Builder基礎進階

http://download.chinaitlab.com/program/files/6316.html

C++ 設計新思維

http://download.chinaitlab.com/program/files/6037.html

C++Builder英文幫助

http://download.chinaitlab.com/program/files/6315.html

C語言初學者入門講座

http://download.chinaitlab.com/program/files/11641.html

C++完全參考手冊

http://download.chinaitlab.com/program/files/9845.html

C遊戲編程從入門到精通

http://download.chinaitlab.com/program/files/9253.html

《C++Builder學習大全》中文版

http://download.chinaitlab.com/program/files/2141.html

C++ Builder編程研究文檔

http://download.chinaitlab.com/program/files/12888.html

C常用函數

http://download.chinaitlab.com/program/files/3867.html

C++程序調試實用手冊

http://download.chinaitlab.com/program/files/6131.html

Borland c++4.0從入門到精通

http://download.chinaitlab.com/program/files/4592.html

實用教程
經典C語言教程

http://download.chinaitlab.com/program/files/12625.html

C++捷徑教程(第三版)

http://download.chinaitlab.com/program/files/12591.html

Borland c++實用教材

http://download.chinaitlab.com/program/files/4552.html

嵌入式系統中C的開發

http://download.chinaitlab.com/program/files/6027.html

C++上機實踐指導教程(第三版)

http://download.chinaitlab.com/program/files/11635.html

C++程序設計語言題解

http://download.chinaitlab.com/program/files/9846.html

C++大學教程(第二版)

http://download.chinaitlab.com/program/files/8918.html

C++ BUILDER 實用培訓教程

http://download.chinaitlab.com/program/files/3182.html

Borland c++程序設計教程

http://download.chinaitlab.com/program/files/4549.html

C++Builder自學培訓教程

http://download.chinaitlab.com/program/files/6317.html

C++程序設計培訓教程

http://download.chinaitlab.com/program/files/6339.html

創世紀的C++ Builder教程

http://download.chinaitlab.com/program/files/6175.html

C++傻瓜教程

http://download.chinaitlab.com/program/files/12647.html

C++編程金典(第三版)

http://download.chinaitlab.com/program/files/12588.html

C高級實用程序設計

http://download.chinaitlab.com/program/files/13238.html

精通C++ Builder 5程序設計高級教程

http://download.chinaitlab.com/program/files/10437.html

C++程序設計語言經典題與實驗指導

http://download.chinaitlab.com/program/files/9256.html

C++程序設計教程實驗書

http://download.chinaitlab.com/program/files/8917.html

C++面向對象到窗口程序設計

http://download.chinaitlab.com/program/files/10440.html

C++大學基礎教程

http://download.chinaitlab.com/program/files/11283.html

C語言核心編程

http://download.chinaitlab.com/program/files/9251.html

Borland c++4.0程序設計

http://download.chinaitlab.com/program/files/4547.html

嵌入式系統的C程序設計

http://download.chinaitlab.com/program/files/11050.html

經典C教程

http://download.chinaitlab.com/program/files/10922.html

C++ 面向對象多線程編程

http://download.chinaitlab.com/program/files/6007.html

Borland c++深入編程

http://download.chinaitlab.com/program/files/4551.html

實用C語言詳解

http://download.chinaitlab.com/program/files/3274.html

編程實例
C語言程序設計題典

http://download.chinaitlab.com/program/files/11073.html

C++實例教程

http://download.chinaitlab.com/program/files/11637.html

C++30天極限教程

http://download.chinaitlab.com/program/files/11632.html

C++Builder程序設計範例

http://download.chinaitlab.com/program/files/12892.html

經典編程900例(C語言)

http://download.chinaitlab.com/program/files/7972.html

C語言程序基礎及應用實例

http://download.chinaitlab.com/program/files/10456.html

C++編程實例詳解

http://download.chinaitlab.com/program/files/6988.html

一個月挑戰C++

http://download.chinaitlab.com/program/files/13236.html

C++ Builder網絡開發實例

http://download.chinaitlab.com/program/files/12891.html

C語言趣味程序百例精解

http://download.chinaitlab.com/program/files/9249.html

自學C++半月通

http://download.chinaitlab.com/program/files/9232.html

C語言學習300例

http://download.chinaitlab.com/program/files/10458.html

C++實踐之路

http://download.chinaitlab.com/program/files/6040.html

Borland c++應用篇

http://download.chinaitlab.com/program/files/4554.html

C++Builder6.0界面實例開發

http://download.chinaitlab.com/program/files/12643.html

21天學通C語言(第六版)

http://download.chinaitlab.com/program/files/11908.html

邊用邊學C語言

http://download.chinaitlab.com/program/files/11654.html

C語言完美演繹

http://download.chinaitlab.com/program/files/10457.html

設計60系列C++遊戲

http://download.chinaitlab.com/program/files/10436.html

C程序100例

http://download.chinaitlab.com/program/files/10200.html
C++物件模型

http://download.chinaitlab.com/program/files/10018.html

C++ Builder 5編程實例與技巧

http://download.chinaitlab.com/program/files/4439.html

C語言程序設計及應用實例

http://download.chinaitlab.com/program/files/3241.html

Borland C++ Builder6開發人員

http://download.chinaitlab.com/program/files/12889.html

Borland C++ 高級開發實踐

http://download.chinaitlab.com/program/files/10553.html

經驗技巧
C++編碼規範與指導

http://download.chinaitlab.com/program/files/9258.html

C++核心編程技術

http://download.chinaitlab.com/program/files/12645.html

C++程序設計陷阱

http://download.chinaitlab.com/program/files/12589.html

C數值算法程序大全

http://download.chinaitlab.com/program/files/11642.html

C++編程-數據結構與程序設計方法

http://download.chinaitlab.com/program/files/9257.html

C和C++代碼精粹

http://download.chinaitlab.com/program/files/11910.html

C高級編程技術

http://download.chinaitlab.com/program/files/10462.html

C++語言教程大全

http://download.chinaitlab.com/program/files/9255.html

C++Builder核心program

http://download.chinaitlab.com/program/files/6318.html

C語言常見問題集

http://download.chinaitlab.com/program/files/13239.html

C++ Builder 3 核心編程技術

http://download.chinaitlab.com/program/files/4973.html

Borland C++程序設計技術

http://download.chinaitlab.com/program/files/4972.html

C語言高級實用編程技巧

http://download.chinaitlab.com/program/files/4593.html

用C實現面向對象

http://download.chinaitlab.com/program/files/7566.html

C專家編程

http://download.chinaitlab.com/program/files/12717.html

C程序設計與應用

http://download.chinaitlab.com/program/files/11638.html

C++數據結構

http://download.chinaitlab.com/program/files/9672.html

用C++開發Web商用程序

http://download.chinaitlab.com/program/files/6975.html

C&C++深層探索

http://download.chinaitlab.com/program/files/6036.html

C++ 和麪向對象的數值計算

http://download.chinaitlab.com/program/files/6006.html

C++代碼設計與重用

http://download.chinaitlab.com/program/files/5980.html

C++程序員JAVA編程

http://download.chinaitlab.com/program/files/4557.html

Borland c++寶典

http://download.chinaitlab.com/program/files/4548.html

C語言最新編程技巧200例

http://download.chinaitlab.com/program/files/3861.html

C++ Builder高級開發人員技術指南

http://download.chinaitlab.com/program/files/12890.html

C++語言學習經驗集合

http://download.chinaitlab.com/program/files/12770.html

C語言編程寶典大全

http://download.chinaitlab.com/program/files/10463.html

用C語言設計屏幕界面技術

http://download.chinaitlab.com/program/files/9233.html

Turboc庫函數源程序與參考大全

http://download.chinaitlab.com/program/files/9245.html

C++ Builder 5 開發人員指南

http://download.chinaitlab.com/program/files/6200.html

C和C++代碼錦囊

http://download.chinaitlab.com/program/files/12590.html

C++ 內存管理算法和實現

http://download.chinaitlab.com/program/files/11631.html

C++程序設計實驗指導(錢能)

http://download.chinaitlab.com/program/files/10916.html

C語言學習和精華文摘

http://download.chinaitlab.com/program/files/10459.html

標準C++寶典

http://download.chinaitlab.com/program/files/10438.html

C_C++深層探索

http://download.chinaitlab.com/program/files/6989.html

Borland c++庫函數詳解

http://download.chinaitlab.com/program/files/4550.html

C++和麪向對象的數值計算

http://download.chinaitlab.com/program/files/6987.html

高質量C、C++編程指南

http://download.chinaitlab.com/program/files/3792.html

 ===============================================================

C++著名程序庫的比較和學習經驗


C++著名程序庫的比較和學習經驗(轉自校內,雖然不是搞C++的,但瞭解一些基礎的還是很有必要)1、C++各大有名庫的介紹——C++標準庫 
2、C++各大有名庫的介紹——準標準庫Boost 
3、C++各大有名庫的介紹——GUI 
4、C++各大有名庫的介紹——網絡通信 
5、C++各大有名庫的介紹——XML 
6、C++各大有名庫的介紹——科學計算 
7、C++各大有名庫的介紹——遊戲開發 
8、C++各大有名庫的介紹——線程 
9、C++各大有名庫的介紹——序列化 
10、C++各大有名庫的介紹——字符串 
11、C++各大有名庫的介紹——綜合 
12、C++各大有名庫的介紹——其他庫 
13、C++名人的網站 

在 C++中,庫的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了設計庫來擴充功能要好過設計更多的語法的言論。現實中,C++的庫門類繁多,解決的問題也是極其廣泛,庫從輕量級到重 量級的都有。不少都是讓人眼界大開,亦或是望而生嘆的思維傑作。由於庫的數量非常龐大,而且限於筆者水平,其中很多並不瞭解。所以文中所提的一些庫都是比 較著名的大型庫。 


1、C++各大有名庫的介紹——C++標準庫 標準庫中提供了C++程序的基本設施。雖然C++標準庫隨着C++標準折騰了許多年,直到標準的出臺才正式定型,但是在標準庫的實現上卻很令人欣慰得看到多種實現,並且已被實踐證明爲有工業級別強度的佳作。 
1.1、Dinkumware C++ Library
參考站點:http://www.dinkumware.com/ 
P.J. Plauger編寫的高品質的標準庫。P.J. Plauger博士是Dr. Dobb's程序設計傑出獎的獲得者。其編寫的庫長期被Microsoft採用,並且最近Borland也取得了其OEM的license,在其 C/C++的產品中採用Dinkumware的庫。
1.2、RogueWave Standard C++ Library
參考站點:http://www.roguewave.com/ 
這個庫在Borland C++ Builder的早期版本中曾經被採用,後來被其他的庫給替換了。筆者不推薦使用。
1.3、SGI STL
參考站點:http://www.roguewave.com/ 
SGI公司的C++標準模版庫。
1.4、STLport
參考站點:http://www.stlport.org/ 
SGI STL庫的跨平臺可移植版本。


2、C++各大有名庫的介紹——準標準庫Boost 
Boost庫是一個經過千錘百煉、可移植、提供源代碼的C++庫,作爲標準庫的後備,是C++標準化進程的發動機之一。 Boost庫由C++標準委員會庫工作組成員發起,在C++社區中影響甚大,其成員已近2000人。 Boost庫爲我們帶來了最新、最酷、最實用的技術,是不折不扣的“準”標準庫。 Boost中比較有名氣的有這麼幾個庫:
2.1 Regex  正則表達式庫
2.2 Spirit   LL parser framework,用C++代碼直接表達EBNF
2.3 Graph  圖組件和算法
2.4 Lambda  在調用的地方定義短小匿名的函數對象,很實用的functional功能
2.5 concept check   檢查泛型編程中的concept
2.6 Mpl   用模板實現的元編程框架
2.7 Thread   可移植的C++多線程庫
2.8 Python   把C++類和函數映射到Python之中
2.9 Pool    內存池管理
2.10 smart_ptr   5個智能指針,學習智能指針必讀,一份不錯的參考是來自CUJ的文章:
Smart Pointers in Boost,哦,這篇文章可以查到,CUJ是提供在線瀏覽的。中文版見筆者在《Dr.Dobb's Journal軟件研發雜誌》第7輯上的譯文。
Boost總體來說是實用價值很高,質量很高的庫。並且由於其對跨平臺的強調,對標準C++的強調,是編寫平臺無關,現代C++的開發者必備的 工具。但是Boost中也有很多是實驗性質的東西,在實際的開發中實用需要謹慎。並且很多Boost中的庫功能堪稱對語言功能的擴展,其構造用盡精巧的手 法,不要貿然的花費時間研讀。Boost另外一面,比如Graph這樣的庫則是具有工業強度,結構良好,非常值得研讀的精品代碼,並且也可以放心的在產品 代碼中多多利用。
參考站點:http://www.boost.org 

3、C++各大有名庫的介紹——GUI 
在衆多C++的庫中,GUI部分的庫算是比較繁榮,也比較引人注目的。在實際開發中,GUI庫的選擇也是非常重要的一件事情,下面我們綜述一下可選擇的GUI庫,各自的特點以及相關工具的支持。 3.1、MFC
大名鼎鼎的微軟基礎類庫(Microsoft Foundation Class)。大凡學過VC++的人都應該知道這個庫。雖然從技術角度講,MFC是不大漂亮的,但是它構建於Windows API 之上,能夠使程序員的工作更容易,編程效率高,減少了大量在建立 Windows 程序時必須編寫的代碼,同時它還提供了所有一般 C++ 編程的優點,例如繼承和封裝。MFC 編寫的程序在各個版本的Windows操作系統上是可移植的,例如,在Windows 3.1下編寫的代碼可以很容易地移植到 Windows NT 或 Windows 95 上。但是在最近發展以及官方支持上日漸勢微。
3.2、QT
參考網站:http://www.trolltech.com 
Qt是Trolltech公司的一個多平臺的C++圖形用戶界面應用程序框架。它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所用功 能。Qt是完全面向對象的很容易擴展,並且允許真正地組件編程。自從1996年早些時候,Qt進入商業領域,它已經成爲全世界範圍內數千種成功的應用程序 的基礎。Qt也是流行的Linux桌面環境KDE 的基礎,同時它還支持Windows、Macintosh、Unix/X11等多種平臺。[wangxinus注:QT目前已經是Nokia旗下的產品,原官方網站已經失效,目前爲http://qt.nokia.com.2009年初發布的Qt4.5版本開始使用LGPL協議,諾基亞希望以此來吸引更多的開發人員使用Qt庫]
3.3、WxWindows
參考網站:http://www.wxwindows.org 
跨平臺的GUI庫。因爲其類層次極像MFC,所以有文章介紹從MFC到WxWindows的代碼移植以實現跨平臺的功能。通過多年的開發也是一個日趨完善的GUI庫,支持同樣不弱於前面兩個庫。並且是完全開放源代碼的。新近的C++ Builder X的GUI設計器就是基於這個庫的。[wangxinus注:迫於微軟的施壓,已經由WxWindows更名爲wxWidgets]
3.4、Fox
參考網站:http://www.fox-toolkit.org/ 
開放源代碼的GUI庫。作者從自己親身的開發經驗中得出了一個理想的GUI庫應該是什麼樣子的感受出發,從而開始了對這個庫的開發。有興趣的可以嘗試一下。
3.5、WTL
基於ATL的一個庫。因爲使用了大量ATL的輕量級手法,模板等技術,在代碼尺寸,以及速度優化方面做得非常到位。主要面向的使用羣體是開發COM輕量級供網絡下載的可視化控件的開發者。
3.6、GTK
參考網站:http://gtkmm.sourceforge.net/ 
GTK是一個大名鼎鼎的C的開源GUI庫。在Linux世界中有Gnome這樣的殺手應用。而Qt就是這個庫的C++封裝版本。[wangxinus注:“Qt 就是這個庫的C++封裝版本”是錯誤的。Qt早於GTK,最初Qt由於協議的原因引起社區的不滿,另外開發了一個基於C語言的GTK庫,後面的擴展版本爲 GTK+。GTK+的Gnome和Qt的KDE是目前linux桌面的兩大陣營,曾有水火不容之勢。目前雙方都以及開源社區的精神,已經和解。]

4、C++各大有名庫的介紹——網絡通信 
4.1、ACE
參考網站:http://www.cs.wustl.edu/~schmidt/ACE.html 
C++庫的代表,超重量級的網絡通信開發框架。ACE自適配通信環境(Adaptive Communication Environment)是可以自由使用、開放源代碼的面向對象框架,在其中實現了許多用於併發通信軟件的核心模式。ACE提供了一組豐富的可複用C++ 包裝外觀(Wrapper Facade)和框架組件,可跨越多種平臺完成通用的通信軟件任務,其中包括:事件多路分離和事件處理器分派、信號處理、服務初始化、進程間通信、共享內存管理、消息路由、分佈式服務動態(重)配置、併發執行和同步,等等。
4.2、StreamModule
參考網站:http://www.omnifarious.org/StrMod 
設計用於簡化編寫分佈式程序的庫。嘗試着使得編寫處理異步行爲的程序更容易,而不是用同步的外殼包起異步的本質。
4.3、SimpleSocket
參考網站:http://home.hetnet.nl/~lcbokkers/simsock.htm 
這個類庫讓編寫基於socket的客戶/服務器程序更加容易。
4.4、A Stream Socket API for C++
參考網站:http://www.pcs.cnu.edu/~dgame/sockets/socketsC++/sockets.html 
又一個對Socket的封裝庫。

5、C++各大有名庫的介紹——XML 
5.1、Xerces
參考網站:http://xml.apache.org/xerces-c/ 
Xerces-C++ 是一個非常健壯的XML解析器,它提供了驗證,以及SAX和DOM API。XML驗證在文檔類型定義(Document Type Definition,DTD)方面有很好的支持,並且在2001年12月增加了支持W3C XMLSchema 的基本完整的開放標準。
5.2、XMLBooster
參考網站:http://www.xmlbooster.com/ 
這個庫通過產生特製的parser的辦法極大的提高了XML解析的速度,並且能夠產生相應的GUI程序來修改這個parser。在DOM和SAX兩大主流XML解析辦法之外提供了另外一個可行的解決方案。
5.3、Pull Parser
參考網站:http://www.extreme.indiana.edu/xgws/xsoap/xpp 
這個庫採用pull方法的parser。在每個SAX的parser底層都有一個pull的parser,這個xpp把這層暴露出來直接給大家使用。在要充分考慮速度的時候值得嘗試。
5.4、Xalan
參考網站:http://xml.apache.org/xalan-c/ 
Xalan是一個用於把XML文檔轉換爲HTML,純文本或者其他XML類型文檔的XSLT處理器。
5.5、CMarkup
參考網站:http://www.firstobject.com/xml.htm 
這是一種使用EDOM的XML解析器。在很多思路上面非常靈活實用。值得大家在DOM和SAX之外尋求一點靈感。
5.6、libxml++
http://libxmlplusplus.sourceforge.net/ 
libxml++是對著名的libxml XML解析器的C++封裝版本。
5.7. TinyXML [wangxinus注:一個非常小巧的XML解析庫,基於DOM的。]

6、C++各大有名庫的介紹——科學計算 
6.1、Blitz++
參考網站:http://www.oonumerics.org/blitz 
Blitz++ 是一個高效率的數值計算函數庫,它的設計目的是希望建立一套既具像C++ 一樣方便,同時又比Fortran速度更快的數值計算環境。通常,用C++所寫出的數值程序,比 Fortran慢20%左右,因此Blitz++正是要改掉這個缺點。方法是利用C++的template技術,程序執行甚至可以比Fortran更快。
Blitz++目前仍在發展中,對於常見的SVD,FFTs,QMRES等常見的線性代數方法並不提供,不過使用者可以很容易地利用Blitz++所提供的函數來構建。
6.2、POOMA
參考網站:http://www.codesourcery.com/pooma/pooma 
POOMA是一個免費的高性能的C++庫,用於處理並行式科學計算。POOMA的面向對象設計方便了快速的程序開發,對並行機器進行了優化以達到最高的效率,方便在工業和研究環境中使用。
6.3、MTL
參考網站:http://www.osl.iu.edu/research/mtl 
Matrix Template Library(MTL)是一個高性能的泛型組件庫,提供了各種格式矩陣的大量線性代數方面的功能。在某些應用使用高性能編譯器的情況下,比如Intel的編譯器,從產生的彙編代碼可以看出其與手寫幾乎沒有兩樣的效能。
6.4、CGAL
參考網站:www.cgal.org 
Computational Geometry Algorithms Library的目的是把在計算幾何方面的大部分重要的解決方案和方法以C++庫的形式提供給工業和學術界的用戶。

7、C++各大有名庫的介紹——遊戲開發 
7.1、Audio/Video 3D C++ Programming Library
參考網站:http://www.galacticasoftware.com/products/av/ 

AV3D是一個跨平臺,高性能的C++庫。主要的特性是提供3D圖形,聲效支持(SB,以及S3M),控制接口(鍵盤,鼠標和遙感),XMS。
7.2、KlayGE
參考網站:http://home.g365.net/enginedev/ 
國內遊戲開發高手自己用C++開發的遊戲引擎。KlayGE是一個開放源代碼、跨平臺的遊戲引擎,並使用Python作腳本語言。KlayGE在LGPL協議下發行。感謝龔敏敏先生爲中國遊戲開發事業所做出的貢獻。
[wangxinus注:這個庫國人瞭解很少,百度百科的KlayGE詞條還是本人創建的。一個人開發一個遊戲引擎庫,是在讓筆者汗顏,對作者表示欽佩!]
7.3、OGRE
參考網站:http://www.ogre3d.org 
OGRE(面向對象的圖形渲染引擎)是用C++開發的,使用靈活的面向對象3D引擎。它的目的是讓開發者能更方便和直接地開發基於3D硬件設備 的應用程序或遊戲。引擎中的類庫對更底層的系統庫(如:Direct3D和OpenGL)的全部使用細節進行了抽象,並提供了基於現實世界對象的接口和其 它類。

8、C++各大有名庫的介紹——線程 
8.1、C++ Threads
參考網站:http://threads.sourceforge.net/ 
這個庫的目標是給程序員提供易於使用的類,這些類被繼承以提供在Linux環境中很難看到的大量的線程方面的功能。
8.2、ZThreads
參考網站:http://zthread.sourceforge.net/ 
一個先進的面向對象,跨平臺的C++線程和同步庫。

9、C++各大有名庫的介紹——序列化 
9.1、s11n
參考網站:http://s11n.net/ 
一個基於STL的C++庫,用於序列化POD,STL容器以及用戶定義的類型。
9.2、Simple XML Persistence Library
參考網站:http://sxp.sourceforge.net/ 
這是一個把對象序列化爲XML的輕量級的C++庫。

10、C++各大有名庫的介紹——字符串 
10.1、C++ Str Library
參考網站:http://www.utilitycode.com/str/ 
操作字符串和字符的庫,支持Windows和支持gcc的多種平臺。提供高度優化的代碼,並且支持多線程環境和Unicode,同時還有正則表達式的支持。
10.2、Common Text Transformation Library
參考網站:http://cttl.sourceforge.net/ 
這是一個解析和修改STL字符串的庫。CTTL substring類可以用來比較,插入,替換以及用EBNF的語法進行解析。
10.3、GRETA
參考網站:http://research.microsoft.com/projects/greta/ 
這是由微軟研究院的研究人員開發的處理正則表達式的庫。在小型匹配的情況下有非常優秀的表現。

11、C++各大有名庫的介紹——綜合 
11.1、P::Classes
參考網站:http://pclasses.com/ 
一個高度可移植的C++應用程序框架。當前關注類型和線程安全的signal/slot機制,i/o系統包括基於插件的網絡協議透明的i/o架構,基於插件的應用程序消息日誌框架,訪問sql數據庫的類等等。
11.2、ACDK - Artefaktur Component Development Kit
參考網站:http://acdk.sourceforge.net/ 
這是一個平臺無關的C++組件框架,類似於Java或者.NET中的框架(反射機制,線程,Unicode,廢料收集,I/O,網絡,實用工具,XML,等等),以及對Java, Perl, Python, TCL, Lisp, COM 和 CORBA的集成。
11.3、dlib C++ library
參考網站:http://www.cis.ohio-state.edu/~kingd/dlib/ 
各種各樣的類的一個綜合。大整數,Socket,線程,GUI,容器類,以及瀏覽目錄的API等等。
11.4、Chilkat C++ Libraries
參考網站:http://www.chilkatsoft.com/cpp_libraries.asp 
這是提供zip,e-mail,編碼,S/MIME,XML等方面的庫。
11.5、C++ Portable Types Library (PTypes)
參考網站:http://www.melikyan.com/ptypes/ 
這是STL的比較簡單的替代品,以及可移植的多線程和網絡庫。
11.6、LFC
參考網站:http://lfc.sourceforge.net/ 
哦,這又是一個嘗試提供一切的C++庫

12、C++各大有名庫的介紹——其他庫 
12.1、Loki
參考網站:http://www.moderncppdesign.com/ 
哦,你可能抱怨我早該和Boost一起介紹它,一個實驗性質的庫。作者在loki中把C++模板的功能發揮到了極致。並且嘗試把類似設計模式這樣思想層面的東西通過庫來提供。同時還提供了智能指針這樣比較實用的功能。
12.2、ATL
ATL(Active Template Library)是一組小巧、高效、靈活的類,這些類爲創建可互操作的COM組件提供了基本的設施。
12.3、FC++: The Functional C++ Library
這個庫提供了一些函數式語言中才有的要素。屬於用庫來擴充語言的一個代表作。如果想要在OOP之外尋找另一分的樂趣,可以去看看函數式程序設計的世界。大師Peter Norvig在 “Teach Yourself Programming in Ten Years”一文中就將函數式語言列爲至少應當學習的6類編程語言之一。
12.4、FACT!
參考網站:http://www.kfa-juelich.de/zam/FACT/start/index.html 
另外一個實現函數式語言特性的庫
12.5、Crypto++
提供處理密碼,消息驗證,單向hash,公匙加密系統等功能的免費庫。
還有很多非常激動人心或者是極其實用的C++庫,限於我們的水平以及文章的篇幅不能包括進來。在對於這些已經包含近來的庫的介紹中,由於並不是每一個我們都使用過,所以難免有偏頗之處,請讀者見諒。

13、C++名人的網站 
正如我們可以通過計算機歷史上的重要人物瞭解計算機史的發展,C++相關人物的網站也可以使我們得到最有價值的參考與借鑑,下面的人物我們認爲沒 有介紹的必要,只因下面的人物在C++領域的地位衆所周知,我們只將相關的資源進行羅列以供讀者學習,他們有的工作于貝爾實驗室,有的工作於知名編譯器廠 商,有的在不斷推進語言的標準化,有的爲讀者撰寫了多部千古奇作…… 

1、Bjarne Stroustrup
http://www.research.att.com/~bs/ 
2、Stanley B. Lippman
http://blogs.msdn.com/slippman/ (中文版)
http://www.zengyihome.net/slippman/index.htm 
3、Scott Meyers
http://www.aristeia.com/ 
4、David Musser
http://www.cs.rpi.edu/~musser/ 
5、Bruce Eckel
http://www.bruceeckel.com 
http://blog.csdn.net/beckel Bruce Eckel 博客中文版
6、Nicolai M. Josuttis
http://www.josuttis.com/ 
7、Herb Sutter
http://www.gotw.ca/ 
http://blog.csdn.net/hsutter/ Herb Sutter 中文博客
8、Andrei Alexandrescu

http://www.moderncppdesign.com

==========================================================================

fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory.

Q1:fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory。

有初學C++者經常會出現如下錯誤:

fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory。

這個錯誤一般在使用Visual C++ .NET 2003/2005/208/2010時出現。

原因,iostream.h爲C類庫,C++類庫中應該爲iostream。

另外cin,cout等函數在std命名空間中。使用時應加上using namespace std;

A:

將#include <iostream.h>

改爲#include <iostream>
using namespace std;

Q2:Fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory when trying to compile your C / C++ code

A:

This is a common mistake among C programmers who start coding in a new environment with a new compiler such as .NET 1.1 or .NET 2.0. You get the error because theiostream.hfile is no longer used with these compilers, instead use the ISO compliant file iostream:

----------------------------

dont forget to add
using namespace std;

----------------------------

my turbo c++ ver 3.0 could not open include files iostream.h and conio.h even trying #include<iostream>; is not working what is the problem and how to solve it,plz reply 



==========================================================================

C++ 發展歷程

C++是從C語言發展演變而來,C語言最初在貝爾實驗室由Dennis Ritchie在B語言的基礎上開發出來的。目前比較流行的C語言版本幾乎以ANSI C爲基礎的。1972年在DEC PDP-II計算機上實現了最初的C語言。C++是1980年由AT&T 貝爾實驗室的Bjarne Stroustrup 博士創建的。

Bjarne Stroustrup博士,1950年出生于丹麥,先後畢業於丹麥阿魯斯大學和英國劍橋大學,AT&T大規模程序設計研究部門負責人,AT&T 貝爾實驗室和ACM成員。1979年,Stroustrup開始開發一種語言,當時稱爲"C with Class",後來演化爲C++。1998年,ANSI/ISOC++標準建立,同年,Stroustrup推出其經典著作The C++ Programming Language的第三版。2002年10月,Stroustrup首次訪問中國。

Bjarne Stroustrup 語錄

  一、致讀者

  1. 在編程序時,你是在爲你針對某個問題的解決方案中的思想建立起一種具體表示。讓程序的結構儘可能地直接反映這些思想:

  ★.如果你能把“它”看成一個獨立的概念,就把它做成一個類。

  ★.如果你能把“它”看成一個獨立的實體,就把它做成某個類的一個對象。

  ★.如果兩個類有共同的界面,將此界面做成一個抽象類。

  ★.如果兩個類的實現有某些顯著的共同東西,將這些共性做成一個基類。

  ★.如果一個類是一種對象的容器,將它做成一個模板。

  ★.如果一個函數實現對某容器的一個算法,將它做成爲對一族容器可用的模板函數。

  ★.如果一組類、模板等相互之間有邏輯聯繫,將它們放進一個名字空間裏。

  2. 在你定義一個並不是實現某個像矩陣或複數這樣的數學對象的類時,或者定義一個低層的類型如鏈接表的時候:

  ★.不要使用全局數據(使用成員)。

  ★.不要使用全局函數。

  ★.不要使用公用數據成員。

  ★.不要使用友元,除非爲了避免a或c。

  ★.不要在一個類裏面放“類型域”(指那種爲了說明一個類所存儲數據的情況而放置的標誌域) ;採用虛函數。

  ★.不要使用在線函數(inline function),除非作爲效果顯著的優化。

  二、C++ 概覽

  1. 不用害怕,一切都會隨着時間的推移而逐漸明朗起來。

  2. 你並不需要在知道了C++的所有細節之後才能寫出好的C++程序。

  3. 請特別關注程序設計技術,而不是各種語言特徵。

  三、標準庫概覽

  1. 不要像重新發明車輪那樣企圖做每件事;去使用庫。

  2. 不要相信奇蹟;要理解你的庫能做什麼,它們如何做,它們做時需要多大的代價。

  3. 當你遇到一個選擇時,應該優先選擇標準庫而不是其他的庫。

  4. 不要認爲標準庫對於任何事情都是最理想的。

  5. 切記#include 你所用到的功能的頭文件。

  6. 記住,標準庫的功能定義在名字空間std之中。

  7. 請用string,而不是char*。

  8. 如果懷疑,就用一個檢查區間範圍的向量(例如Vec)。

  9. vector<T> 、list<T>和 map<key,value> 都比T[] 好。

  10. 如果向一個容器中添加一個元素,用push_back() 或 back_inserter()。

  11. 採用對vector的push_back(),而不是對數組的realloc()。

  12. 在main()中捕捉公共的異常。

  四、類型和聲明

  1. 保持較小的作用域。

  2. 不要在一個作用域和它外圍的作用域裏採用同樣的名字。

  3. 在一個聲明中只聲明一個名字。

  4. 讓常用的和局部的名字比較短,讓不常用的和全局的名字比較長。

  5. 避免看起來類似的名字。

  6. 維持某種統一的命名風格。

  7. 仔細選擇名字,反映其意義而不是反映實現方式。

  8. 如果所用的內部類型表示某種可能變化的值,請用typedef 爲它定義一個有意義的名字。

  9. 用typedef爲類型定義同義詞,用枚舉或類去定義新類型。

  10. 切記每個聲明中都必須描述一個類型(沒有“隱式的int”)。

  11. 避免有關字符數值的不必要假設。

  12. 避免有關整數大小的不必要假設。

  13. 避免有關浮點類型表示範圍的不必要假設。

  14. 優先使用普通的int 而不是short int 或者long int。

  15. 優先使用double 而不是float 或者long double。

  16. 優先使用普通的 char 而不是 signed char或者 unsigned char。

  17. 避免做出有關對象大小的不必要假設。

  18. 避免無符號算術。

  19. 應該帶着疑問去看待從signed 到unsigned ,或者從unsigned 到signed 的轉換。

  20. 應該帶着疑問去看待從浮點到整型的轉換。

  21. 應該帶着疑問去看待向較小類型的轉換,如將int轉換到char。

  五、忠告

  1. 避免非平凡的指針算術。

  2. 當心,不要超出數組的界線去寫。

  3. 儘量使用0而不是NULL。

  4. 儘量使用vector 和valarray ,而不是內部(C風格)的數組。

  5. 儘量使用string而不是以0結尾的char 數組。

  6. 儘量少用普通的引用參數。

  7. 避免 void*,除了在某些底層代碼裏。

  8. 避免在代碼中使用非平凡的文字量(“神祕的數”)。相反,應該定義和使用各種符號常量。(這裏應理解爲避免使用無意義的立即數,而定義一些能夠代表意義的常量,例如,用true而不要用(C/C++)或-1(VB))


 

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