Функция stoi не объявлена
Я пытаюсь использовать stoi для преобразования строки в целое число, однако он говорит, что он не объявлен. У меня есть стандартная библиотека и включенная, но она все еще говорит: "[Ошибка] 'stoi' не был объявлен в этой области"
код следующий:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string>
using namespace std;
int main()
{
string end, init;
cout << "Introduction" << endl;
cout << "Start time (xx:yy)" << endl;
cin >> init;
string hours0 = init.substr(0,2);
int hours = stoi(hours0);
cout << hours << endl;
system("pause");
return 0;
}
либо скажите мне, почему это не работает, или дайте мне второй вариант сделать это, пожалуйста.
9 ответов
std::stoi
был представлен в C++11. Убедитесь, что параметры компилятора верны и/или компилятор поддерживает C++11.
ответы выше верны, но не хорошо объяснены.
g++ -std=c++11 my_cpp_code.cpp
добавить-std=c++11 в параметры компилятора, поскольку вы, скорее всего, используете более старую версию debian или ubuntu, которая по умолчанию не использует новый стандарт C++11 g++/gcc. У меня была такая же проблема на Debian Wheezy.
http://en.cppreference.com/w/cpp/string/basic_string/stol
показывает в очень маленькой записи справа зеленым цветом, что c++11 требуемый.
stoi
является функцией C++11. Если вы не используете компилятор, который понимает C++11, это просто не будет компилироваться.
можно использовать stringstream
вместо того, чтобы читать входные данные:
stringstream ss(hours0);
ss >> hours;
stoi доступен "начиная с C++11". Убедитесь, что компилятор обновлен.
вы можете попробовать atoi (hours0.c_str()) вместо этого.
в комментариях под другим ответом вы указали, что используете изворотливую версию g++
под MS Windows.
в этом случае -std=c++11
как было предложено в верхнем ответе, все равно не исправит проблему.
пожалуйста, смотрите следующий поток, который обсуждает вашу ситуацию:std:: stoi не существует в g++ 4.6.1 на MinGW
вы используете C++ 11? stoi был добавлен в C++ 11, Если вы работаете в более старой версии, используйте atoi ()
установите последнюю версию TDM-GCC вот ссылка -http://wiki.codeblocks.org/index.php/MinGW_installation
#include <algorithm>
включить это, а затем вы можете скомпилировать его с помощью...
G++ -Wall-std=c++11 тест.cpp-o test
вы также можете добавить "cd / d %~dp0" в качестве первой строки a .файл bat в том же каталоге, что и исходный файл, поэтому все, что вам нужно сделать, это дважды щелкнуть по нему .файл bat для "автоматической" компиляции.
надеюсь, что это помогает!