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