2012-05-09 91 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;