Нередко может возникнуть необходимость объединить строку с данными других типов, например, числами. Однако объединить строку мы можем только с другой строкой. Поэтому данные других типов вначале необходимо преобразовать в строку. Для преобразования в строку применяется функция std:to_string(), в которую передается преобразуемое значение:
#include <iostream> #include <string> int main() { unsigned age{38}; std::string message{ "Age: " + std::to_string(age)}; std::cout << message << std::endl; // Age: 38 }
Нередко может вощникнуть противиположная задача - преобразовать строку в другой тип. Есть ряд функций, которые преобразуют строку в число определенного типа:
stoi()
: преобразует в тип int
stol()
: в long
stoll()
: в long long
stoul()
: в unsigned long
stoull()
: в unsigned long long
stof()
: в float
stod()
: в double
stold()
: в long double
Все они определены в модуле <string>
, работают однотипно и в качестве параметра принимают преобразуемую строку:
std::string str{ "123" }; int n{ std::stoi(str) }; // n == 123
При необходимости можно преобразовать значение типа string в указатель на символы. Для преобразования в указатель на константную строку применяется метод c_str():
#include <iostream> #include <string> int main() { std::string message {"hello"}; const char* message_ptr = message.c_str(); // преобразуем в указатель std::cout << message_ptr << std::endl; }
Для получения указателя также можно применять метод data(), который возвращает указатель на неконстантное значение, если объект string не является константой.
#include <iostream> #include <string> int main() { std::string message {"hello"}; char* message_ptr = message.data(); // преобразуем в указатель std::cout << message_ptr << std::endl; }