push_back for strings而不转换为vector

时间:2015-08-07 00:05:52

标签: c++

我是C ++的新手。我无法弄清楚如何将std::string添加到std::string的末尾而不将其设为std::vector ..

现在我有:

string returnvar;
for (int i=start; i<=end; i++) {
    returnvar.push_back(library[data[i]]);
}

push_back()适用于std::vector<std::string>而不是std::string。我将如何在std::string上继续推进到最后:

a
ab
abc
abcd

等循环的每次迭代

3 个答案:

答案 0 :(得分:7)

std::string有一个push_back()方法,就像std::vector一样(§21.4.6.2/ 21):

void push_back(charT c);
    Effects: Equivalent to append(static_cast<size_type>(1), c).

您可以改为使用operator+=

returnvar += library[data[i]];

或其中一个append()重载:

returnvar.append(&library[data[i]], 1);

returnvar.append(1, library[data[i]]);

答案 1 :(得分:1)

std::string returnvar;
for (std::size_t i = start; i <= end; ++i)
{
    returnvar += library[data[i]];
}

答案 2 :(得分:-3)

您可以使用+ =运算符:

string returnvar;
for (int i=start; i<=end; i++) {
    returnvar += library[data[i]];
}

append函数(编辑以反映Jerry Coffin的更正):

string returnvar;
for (int i=start; i<=end; i++) {
    returnvar.append(1, library[data[i]]);
}

更多信息:

http://www.cplusplus.com/reference/string/string/operator+=/

http://www.cplusplus.com/reference/string/string/append/