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 или использование конкатенации строк, но они не такие чистые или могут привести к дополнительным затратам.
Интерполяция строк - это сахар, но он сладкий. Это упрощает код и избегает потерь производительности из-за многократного добавления строк.