2012-05-09 114 views
4

這樣做的好方法是什麼?用char數組連接C++字符串

char* array = "blah blah"; 
char* array2 = "bloh bloh"; 
string str = string() + array + array2; 

不能做直接string str = array + array2,不能加2個指針。或者我應該這樣做

string str(); 
str += array; 
str += array2; 
+0

不,混合低級別和高級別類型並不好。 – usoban

+0

順便說一句,這段代碼不再是有效的C++(使用C++ 11),並且即使在使用舊版C++來使用不推薦的非const char *文字時也應該生成警告。此外,由於[最令人頭疼的解析],第二個代碼無法編譯(http://stackoverflow.com/q/1424510/1968)。 –

+1

@usoban:'std :: string'定義了從'char *'到'std :: string'的轉換。有時你有一個'char *'來處理,而且沒有辦法繞過它。 –

回答

4

我會寫:

string str = string(array) + array2; 

需要注意的是你的第二個版本is not valid code。您應該刪除括號:

string str; 
str += array; 
str += array2; 

最後,arrayarray2constchar *類型。

+0

它不會將它追加到str? – user1112008

+0

@ user1112008:我不知道我理解你的問題。 – NPE

+0

我只需要粘連2個(或更多)字符數組到字符串。 – user1112008

3

有很多方法可以做到這一點:

string str(array); 
str += array2; 

string str = string(array) + array2; 

甚至

string str = array + string(array2); 

或字符串流:

stringstream ss; 
ss << array << array2;