C++:
Склеивание строк
Как:
В C++ у нас есть несколько способов конкатенации строк. Вот пример с использованием std::string и оператора сложения (+):
#include <iostream>
#include <string>
int main() {
std::string hello = "Привет, ";
std::string world = "Мир!";
std::string greeting = hello + world;
std::cout << greeting << std::endl; // Выводит: Привет, Мир!
return 0;
}Быстро и просто, не правда ли? Но мы также можем использовать append():
#include <iostream>
#include <string>
int main() {
std::string hello = "Привет, ";
hello.append("Мир!");
std::cout << hello << std::endl; // Выводит: Привет, Мир!
return 0;
}Или даже operator+=, если вам так удобнее:
#include <iostream>
#include <string>
int main() {
std::string hello = "Привет, ";
hello += "Мир!";
std::cout << hello << std::endl; // Выводит: Привет, Мир!
return 0;
}Погружение в тему
Исторически C++ взял эстафету у C, который использовал массивы символов и функции вроде strcat() для работы со строками. Это было более запутанно и склонно к ошибкам.
Современный C++ улучшил ситуацию с std::string. Это безопаснее, проще для чтения и предлагает варианты. Если std::string вам не подходит, есть std::stringstream или даже std::format (начиная с C++20) для поклонников форматирования.
Под капотом конкатенация строк включает в себя выделение памяти и копирование. Если это делать неосторожно, это может ударить по производительности вашей программы как кирпич. Умные указатели и семантика перемещения облегчают некоторые из этих проблем.
Не забудем о альтернативах - библиотеки вроде Boost, или работа с UTF-8 через std::string_view для операций с нулевым копированием в современном C++.
См. также
- C++ справочник по
std::string: https://cplusplus.com/reference/string/string/ - Рабочий проект стандарта языка программирования C++: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2020/n4861.pdf
- Узнать больше о
std::format: https://en.cppreference.com/w/cpp/utility/format - Документация библиотеки Boost: https://www.boost.org/doc/libs/1_75_0/libs/string_algo/doc/html/index.html