Преобразование типов и строки

Последнее обновление: 02.03.2023

Преобразование в строку

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