Последнее обновление:2026-10-12
Преобразование C++ string в int¶
Личный публичный аккаунт:

Сначала предложим решения:
- atoi
- strtol
- stoi
Чем они различаются? Ниже сравнение с тестами.
Функции в стиле языка C
Сравнение atoi и strtol:
Вывод: Обе функции ищут с начала строки цифры, знак числа или десятичную точку и прекращают работу при встрече недопустимого символа.Поэтому на символе s выше вывод прекращается и работа завершается досрочно; иначе говоря, если ваша строка — не число, или содержит десятичную точку и другие нецифровые символы, исключение не выбрасывается! Просто выводится 0.
Например:
Вывод: По сравнению с atoi strtol поддерживает преобразование в разных системах счисления, например в восьмеричной и др.Например:
Стиль C++
В C++ для преобразования в int можно использовать stoi; самая большая особенность этой функции по сравнению с первыми двумя — исключения!
Мы знаем, что в C++ по сравнению с языком C появились исключения — это и есть самая заметная возможность этой функции в C++.
Например:
string str1 = "asq,";
// int c = stoi(str1); // 报异常
string str2 = "12312";
int c = stoi(str2); // ok
cout << c << endl;
Своя реализация
То есть написать самому, вот так:
int stringToInt(const string &s) {
int v;
stringstream ss;
ss << s;
ss >> v;
return v;
}
int main() {
int i = stringToInt("2.3");
cout<<i<<endl;
}
Похожие темы¶
- Сборка проектов C++ с Bazel | C++那些事
- Совместная отладка Bazel и LLDB | C++那些事
- CMake: введение и практика | C++那些事
- Введение в управление пакетами Conan для C++ | C++那些事
- C++ Insights: взгляд на этап компиляции | C++那些事
- Интерактивные C++ Jupyter Notebook | C++那些事
- Отладочный макрос dbg-macro для C++ | C++那些事
- Подробный разбор опций компиляции GCC | C++那些事
- Отладка программ на C++ с помощью GDB | C++那些事
- Расширенная отладка с помощью GDB Python | C++那些事