Нередко может возникнуть необходимость объединить строку с данными других типов, например, числами. Однако объединить строку мы можем только с другой строкой. Поэтому данные других типов вначале необходимо преобразовать в строку. Для преобразования в строку применяется функция 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;
}