将几个不同的字符连接成1个字符串
问题描述:
我有几个字符变量,其中包含由我创建的一些逻辑填充的各种字符。基本上我正在寻找一种方法将这些添加到我已经创建的字符串中,但我不确定如何在一个简单的方法中执行此操作,并且不会将所有字符单独附加到字符串中,这非常缓慢。将几个不同的字符连接成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个字符串?
注:值得一提的是,我知道这个方法就足够了,但我也希望改善这里的性能以及
答
使用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
答
也许使用stringstream
:http://www.cplusplus.com/reference/sstream/stringstream/
stringstream ss;
ss << test1 << test2 << test3 << test4 << test5
test = ss.str();
何不单独创建char[5]
类型的剧中人物的变量和工作(就好像它们是测试1,2,...),并在结束你有你的字符串,而不必做任何事情...
+0
这个方法可以工作,但是我发现Danvils的答案更快地处理了连接 –
答
较少的代码。更高效?
string test;
char test1[6];
// fill in test1[0], test1[1], etc, setting test[5]=0
test += test1;
你的方法有什么问题?这对我来说很简单。 – sashoalm
这是一个非常缓慢和低效率的方式,我想尝试提高性能 –
'push_back()'? 'test + = test1'这可能是比'test1 + test2'更高效的方法 – DumbCoder