Склеивание строк

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++.

См. также