将几个不同的字符串联成1个字符串

时间:2014-03-27 13:52:06

标签: c++

我有几个char变量,其中包含由我创建的某些逻辑填充的各种字符。基本上我正在寻找一种方法将这些添加到我已经创建的字符串中,但我不确定如何在一个简单的方法中执行此操作,而不是将所有字符单独附加到字符串,这特别慢。

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

test += test1 + test2, etc

上面的方法不起作用,因为它将字面值相加在一起,就像char的整数值一样,最后创建一个数字。这是我目前(并且非常低效)的方法:

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

有没有办法可以更简单地将这些字符串联成1个字符串?

注意:值得一提的是,我知道这种方法已经足够了,但我也希望在这里提高性能

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

更少的代码。效率更高?

string test;
char test1[6];

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

test += test1;

答案 2 :(得分:0)

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

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

或者为什么不创建一个char[5]类型的变量并单独处理它的字符(好像它们是test1,2,......)并且最后你有你的字符串而不必做任何事情。