Преобразование подстрок в целые числа в C++: удобное руководство

В C++ существует несколько методов преобразования подстрок в целые числа. Независимо от того, работаете ли вы с пользовательским вводом или анализируете строки из файла, понимание этих методов значительно улучшит ваши навыки программирования. В этой статье блога мы рассмотрим различные подходы, используя разговорный язык, и приведем примеры кода, иллюстрирующие каждый метод.

Метод 1: использование stoi() – простой подход
Функция stoi() — это простой способ преобразования подстроки в целое число. Он принимает строку в качестве входных данных и возвращает соответствующее целочисленное значение. Вот пример:

#include <iostream>
#include <string>
int main() {
    std::string str = "12345";
    std::string substring = str.substr(1, 3); // Extracting substring "234"
    int result = std::stoi(substring);
    std::cout << result << std::endl; // Output: 234
    return 0;
}

Метод 2: использование stringstream – гибкий и мощный
Класс stringstream предоставляет универсальный способ преобразования подстрок в целые числа. Он позволяет извлекать значения из строки, как если бы это был поток. Вот пример:

#include <iostream>
#include <sstream>
#include <string>
int main() {
    std::string str = "56789";
    std::string substring = str.substr(2, 4); // Extracting substring "789"
    std::stringstream ss(substring);
    int result;
    ss >> result;
    std::cout << result << std::endl; // Output: 789
    return 0;
}

Метод 3: использование atoi() – классический подход
Функция atoi() — это традиционный метод преобразования подстрок в целые числа. В качестве входных данных он принимает строку в стиле C и возвращает соответствующее целочисленное значение. Вот пример:

#include <iostream>
#include <cstdlib>
#include <cstring>
int main() {
    const char* str = "98765";
    const char* substring = std::strncpy(new char[4], str + 1, 3); // Extracting substring "876"
    int result = std::atoi(substring);
    std::cout << result << std::endl; // Output: 876
    delete[] substring;
    return 0;
}

Метод 4: использование Boost.Lexical_Cast — мощная библиотека
Если у вас есть библиотека Boost, вы можете использовать библиотеку Boost.Lexical_Cast. Он предоставляет удобный способ преобразования подстрок в целые числа. Вот пример:

#include <iostream>
#include <string>
#include <boost/lexical_cast.hpp>
int main() {
    std::string str = "54321";
    std::string substring = str.substr(0, 2); // Extracting substring "54"
    int result = boost::lexical_cast<int>(substring);
    std::cout << result << std::endl; // Output: 54
    return 0;
}

В этой статье мы рассмотрели несколько методов преобразования подстрок в целые числа в C++. Используя такие функции, как stoi(), stringstream, atoi() или даже внешние библиотеки, такие как Boost.Lexical_Cast, вы можете легко обрабатывать различные сценарии. Не забудьте выбрать метод, который лучше всего соответствует вашим конкретным требованиям.