Как добавить много строк в C++

Поскольку я знаю, что C++ только позволяет добавлять 2 строки вместе, т.е.: s = s1 + s2

Но как я могу добавить много строк вместе? Как:

s = s1 + s2 + s3 + s4 + ... + sn
10
задан Steven 19 January 2018 в 10:40
поделиться

4 ответа

Если вы пытаетесь добавить строковые объекты класса std::string, это должно сработать.

string s1 = "string1";
string s2 = "string2";
string s3 = "string3";

string s = s1 + s2 + s3;

OR

string s = string("s1") + string("s2") + string("s3") ...
11
ответ дан 3 December 2019 в 15:51
поделиться

Во-первых, вы можете сделать + sn вещь просто хорошо. Хотя это займет экспоненциальное квадрадичное (см. комментарии) время при условии, что вы используете std:: basic _ последовательность < t > последовательностей на C++ 03.

Можно использовать std:: basic _ последовательность < t >:: append в сочетании с std:: basic _ последовательность < t >:: reserve для объединения последовательности за O (n) раз.

EDIT: Например,

string a;
//either
a.append(s1).append(s2).append(s3);
//or
a.append("I'm a string!").append("I am another string!");
7
ответ дан 3 December 2019 в 15:51
поделиться
s = s1 + s2 + s3 + .. + sn;

будет работать, хотя он может создать множество временных библиотек (хороший оптимизирующий компилятор должен помочь), потому что он будет эффективно интерпретироваться как:

string tmp1 = s1 + s2;
string tmp2 = tmp1 + s3;
string tmp3 = tmp2 + s4;
...
s = tmpn + sn;

Альтернативный способ, который гарантированно не создает временные библиотеки:

s = s1;
s += s2;
s += s3;
...
s += sn;
5
ответ дан 3 December 2019 в 15:51
поделиться

std :: ostringstream создан для этого, см. Пример здесь . Это просто:

std::ostringstream out;
out << "a" << "b" << "c" << .... << "z";
std::string str( out.str());
3
ответ дан 3 December 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: