標頭檔案string與string.h的區別
在c++中,#include與#include的區別,前者要使用更新的編譯器(其實大部分編譯器多比較前衛了,出了有些搞嵌入式的用**的編譯器)。
喔,原來iostream是c++的標頭檔案,iostream.h是c的標頭檔案,即標準的c++標頭檔案沒有.h副檔名,將以前的c的標頭檔案轉化為c++的標頭檔案後,有時加上c的字首表示來自於c,例如cmath就是由math.h變來的。
using namespace std //使用名字空間(使用所有)
using namespace std::cout//只使用cout
如不用using,則在**前可以用sdt::cout《表示使用的是std中的cout。
#include
<
iostream.h
>
//必須要加上.h
void
main()
#include
<
string
>
#include
<
iostream
>
//此處必須去掉.h
using
namespace
std ;
void
main()
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類半點關係也沒有,所以並非的「公升級版本」,他們是毫無關係的兩個標頭檔案。
要達到樓主的目的,比如同時:
#include
<
string
.h>
#include
<
string
>
using
namespace
std;
或者 #include
<
cstring
>
#include
<
string
>
其中<
cstring
>
是與c標準庫的
<
string
.h>
相對應,但裹有std名字空間的版本。
最大的挑戰是把字串標頭檔案理清
楚:是舊的c 標頭檔案,對應的是基於char*的字串處理函式;
是包裝了std 的c++標頭檔案,對應的是新的string 類(看下文);是對
應於舊c 標頭檔案的std 版本。如果能掌握這些(我相信你能),其餘的也就容易
了。是c++ 的標頭檔案,其內包含了乙個string類,string s1就是建立乙個string類的物件
的c語言的東西 並無類,所以不能 string s1
檔案實際上只是在乙個命名空間std中include了 ,…
string與string標頭檔案
先來段 我是在vs2012上實驗的 include stdafx.h include include include using namespace std int tmain int argc,tchar argv cout endl for rit mapstudent.rbegin rit m...
string標頭檔案與cstring標頭檔案
首先說string的標頭檔案 1 包裝了std的c 標頭檔案 2 舊的c標頭檔案 3 舊c標頭檔案的std版本,切記,這不是cstring的標頭檔案 詳見effective c 的第49條 再說cstring的標頭檔案 注 vc9編譯環境下 1 非mfc版本,控制台程式就用這個 2 mfc版本,需要...
類實現string與string標頭檔案
首先宣告,我是乙個菜鳥。一下文章中湧現技術誤導情況蓋不負責 先來段 我是在vs2012上驗實的 include stdafx.h include include include using namespace std int tmain int argc,tchar argv cout endl f...