2014-03-27 129 views
0

我有幾個字符變量,其中包含由我創建的一些邏輯填充的各種字符。基本上我正在尋找一種方法將這些添加到我已經創建的字符串中,但我不確定如何在一個簡單的方法中執行此操作,並且不會將所有字符單獨附加到字符串中,這非常緩慢。將幾個不同的字符連接成1個字符串

string test; 
char test1, test2, test3, test4, test5; 
...Some logic here to populate the chars 

test += test1 + test2, etc 

上述方法,因爲它增加了的值一起從字面上看,如炭的整數值來創建在最後一個號碼不起作用。這是我目前(和效率非常低),這樣做的方法:

test += test1; 
test += test2; 
test += test3; 
test += test4; 
test += test5; 

有沒有一種方法,我可以更簡單地拼接這些字符爲1個字符串?

注:值得一提的是,我知道這個方法就足夠了,但我也希望改善這裏的性能以及

+0

你的方法有什麼問題?這對我來說很簡單。 – sashoalm

+0

這是一個非常緩慢和低效率的方式,我想嘗試提高性能 –

+0

'push_back()'? 'test + = test1'這可能是比'test1 + test2'更高效的方法 – DumbCoder

回答

2

使用resize做出足夠的空間在字符串中,並通過使用operator[]把你的角色:

std::string result = "hello" 
char c1 = '1', c2 = 'F', c3 = '%'; 

size_t len = result.size(); 
result.resize(len + 3); 
result[len] = c1; 
result[len+1] = c2; 
result[len+2] = c3; 

結果:hello1F%

如果你的字符是一個數組它甚至使用insert簡單:

std::string result = "hello"; 
    char c[10]; // 10 characters 
    result.insert(result.end(), &c[0], 10); // add 10 characters to end of string 
0

也許使用stringstreamhttp://www.cplusplus.com/reference/sstream/stringstream/

stringstream ss; 
ss << test1 << test2 << test3 << test4 << test5 
test = ss.str(); 

何不單獨創建char[5]類型的劇中人物的變量和工作(就好像它們是測試1,2,...),並在結束你有你的字符串,而不必做任何事情...

+0

這個方法可以工作,但是我發現Danvils的答案更快地處理了連接 –

1

較少的代碼。更高效?

string test; 
char test1[6]; 

// fill in test1[0], test1[1], etc, setting test[5]=0 

test += test1; 
相關問題