Преобразование строки (string) в целое число (int) в C++

В этой статье мы рассмотрим, как мы можем преобразовать строку (string) в целое число (int) в языке программирования C++.

1. Использование std::stoi

Часто нам может понадобиться преобразовать числовые строки в целые числа. Для этого нам помогут определенные способы, чтобы быстро сделать преобразование.

Рассмотрим ниже два способа преобразования строки в целое число.

Для преобразования объекта std::string в целое число рекомендуется использовать эту опцию в C++. Она принимает строку как входное значение и возвращает целое число.

Вот простой пример:

#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    string inp = "102";
    cout << "Input String: " << inp << endl;
 
    // Use std::stoi() to convert string to integer
    int res = stoi(inp);
 
    cout << "Integer: " << res << endl;
    return 0;
}

На выходе:

Input String: 102
Integer: 102

Это сработает и для строк с отрицательными значениями.

Однако это вызовет исключение std::invalid_argument, если строка имеет неправильный формат.

Поэтому мы должны использовать в нашем коде обработку исключений, если строка не валидируется.

#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    string inp = "Hello";
 
    cout << "Input String: " << inp << endl;
 
    // Use std::stoi() to convert string to integer
    try {
        // Wrap up code in try-catch block if string is not validated
        int res = stoi(inp);
        cout << "Integer: " << res << endl;
    }
    catch(std::invalid_argument e) {
        cout << "Caught Invalid Argument Exception\n";
    }
    return 0;
}

На выходе:

Input String: Hello
Caught Invalid Argument Exception

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

Рассмотрим ниже еще один способ, используя функцию atoi() в стиле C.

2. Использование atoi()

Мы можем преобразовать строку C ( char* ) в целое число, используя atoi(char* str).

Мы можем применить эту логику к нашему объекту std::string, сначала преобразовав его в строку C.

#include <iostream>
#include <string>
 
using namespace std;
 
int main() {
    string inp = "120";
 
    cout << "Input String: " << inp << endl;
 
    // Convert std::string to C-string
    const char* c_inp = inp.c_str();
 
    // Use atoi() to convert C-string to integer
    int res = atoi(c_inp);
 
    cout << "Integer: " << res << endl;
    return 0;
}

На выходе:

Input String: 120
Integer: 120

Как видите, это дает нам тот же результат, что и раньше!

27 июля 2020 в 13:46 | Обновлено 7 ноября 2020 в 01:19 (редакция)
Опубликовано: | Оригинал
Статьи,

Добавить комментарий

Ваш E-mail не будет никому виден. Обязательные поля отмечены *