程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 為什麼推薦std::string而不是char*

為什麼推薦std::string而不是char*

編輯:C++入門知識

   例如如下:


[cpp]
map<const char*, const char*> map_test; 
map_test["a"] = "a"; 
map_test["a"] = "a"; 
map_test["a"] = "a"; 

 map<const char*, const char*> map_test;
 map_test["a"] = "a";
 map_test["a"] = "a";
 map_test["a"] = "a";
    實際上會將三個"a"插入到map中,因為三個key的指針不同,所以被認為是三個不同的key。而如果改為如下用法:


[cpp]
ap<string, string> map_test; 
map_test["a"] = "a"; 
map_test["a"] = "a"; 
map_test["a"] = "a"; 

 map<string, string> map_test;
 map_test["a"] = "a";
 map_test["a"] = "a";
 map_test["a"] = "a";
    編譯器自動加入char* -> string的函數,而string重載了==操作符函數,內部的判斷不是判斷指針是否相等,而是判斷字符串是否相等,這樣一來,實際上只會有一個"a"插入到map中。

    實際上用string的好處還有很多,例如它內部封裝好了大部分常用字符串操作函數,更重要的是支持類似如下的方法:


[cpp]
string a = "a"; 
string b = "b"; 
string c = a + b; 

 string a = "a";
 string b = "b";
 string c = a + b;
    這次寫成文章是為了提醒自己,最近在重寫cocos2d-x的部分實現時,遇到了我第一個例子的問題,算是很簡單的基礎問題吧(羞愧~),以後會盡量用string來代替char *(在不需要十分嚴格考慮性能的情況下)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved