Интерполяция строки

C++:
Интерполяция строки

Как это сделать:

C++ не имеет встроенной интерполяции строк, как некоторые другие языки. Часто используются std::ostringstream, std::format (начиная с C++20) или форматирование в стиле printf.

С использованием std::ostringstream:

#include <sstream>
#include <iostream>

int main() {
    std::ostringstream message;
    int age = 30;
    message << "Привет, мне " << age << " лет.";
    std::cout << message.str() << std::endl; // "Привет, мне 30 лет."
}

С использованием std::format (C++20):

#include <format>
#include <iostream>

int main() {
    int age = 30;
    std::string message = std::format("Привет, мне {} лет.", age);
    std::cout << message << std::endl; // "Привет, мне 30 лет."
}

Подробнее

До C++20 мы объединяли строки с помощью потоков или sprintf, что было неудобно. С появлением std::format мы догнали современные языки, такие как Python с их f-строками.

std::ostringstream: Это предоставляет нам способ построения строк похожий на работу с потоками. Это универсально, но не самый лаконичный метод. Его долго использовали, потому что он безопасен и прост в использовании.

std::format: Появился в C++20, предлагает форматирование похожее на Python. Это более читаемо и эффективно, чем конкатенация строк, но требует более новых компиляторов.

Существуют альтернативы, такие как Boost.Format или использование конкатенации строк, но они не такие чистые или могут привести к дополнительным затратам.

Интерполяция строк - это сахар, но он сладкий. Это упрощает код и избегает потерь производительности из-за многократного добавления строк.

Смотрите также