1. 程式人生 > >(6)第1部分:C++基礎的尾巴~

(6)第1部分:C++基礎的尾巴~

區別 nbsp 自己 字符串處理函數 處理 com bsp 操作 串處理

這篇文章有問題!!!待改

2.6.3編寫自己的頭文件P67中提到:“庫類型string在名為string的頭文件中定義。又如,我們應該把Sales_data類定義在名為Sales_data.h的頭文件中”,後面又提到:“例如,我們的Sales_data類包含有一個string成員,所以Sales_data.h必須包含string.h頭文件。”

在這我有幾個疑問:

1.string頭文件和string.h頭文件是兩種類?區別?

參考:http://www.cnblogs.com/Cmpl/archive/2012/01/01/2309710.html

是兩種不同的類。

原來iostream是C++的頭文件,iostream.h是C的頭文件,即標準的C++頭文件沒有.h擴展名,將以前的C的頭文件轉化為C++的頭文件後,有時加上c的前綴表示來自於c,例如cmath就是由math.h變來的。

iostream.h裏面定義的所有類以及對象都是在全局空間裏,所以你可以直接用cout

但在iostream裏面,它所定義的東西都在名字空間std裏面,所以你必須加上
using namespace std才能使用cout一般一個C++的老的帶“.h”擴展名的庫文件,比如iostream.h,在新標準後的標準庫中都有一個不帶“.h”擴展名的相對應,區別除了後者的好多改進之外,還有一點就是後者的東東都塞進了“std”名字空間中。

但唯獨string特別。
問題在於C++要兼容C的標準庫,而C的標準庫裏碰巧也已經有一個名字叫做“string.h”的頭文件,包含一些常用的C字符串處理函數,比如樓主提到的strcmp。
這個頭文件跟C++的string類半點關系也沒有,所以<string>並非<string.h>的“升級版本”,他們是毫無關系的兩個頭文件。

<string>是c++ 的頭文件,其內包含了一個string類,string s1就是建立一個string類的對象

<string.h> 的c語言的東西 並無類,所以不能 string s1 ,其可以操作上一篇文章中Sales_data裏的bookNo成員,所以為了能操縱這個成員,必須要包含這個文件

<cstring>文件實際上只是在一個命名空間std中include了 <string.h>,…

2.系統定義的類是不是都不加.h,自己定義的類才加.h,以此來區分系統類和自定義類?

不懂。

(6)第1部分:C++基礎的尾巴~