当我尝试编译下面的简单程序时,我收到编译错误。
error: ‘stoi’ was not declared in this scope
我尝试同时包含#include <string>
和#include <string.h>
,但我仍然遇到这些问题。我正在使用Ubuntu,我不记得我是如何安装g ++的,但我确信它使用的是apt-get install g ++命令,因此我不知道我使用的是什么版本的g ++或C ++库。
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
struct Data
{
string fname;
string lname;
int age;
};
int main()
{
bool toContinue = true;
Data data;
string buffer;
do
{
try
{
getline(cin,data.fname);
getline(cin,data.lname);
getline(cin,buffer);
data.age = stoi(buffer);
cout<<data.fname<<" ";
cout<<data.lname<<" ";
cout<<data.age<<endl;
}
catch(std::invalid_argument)
{
cerr<<"Unable to parse integer";
}
}while(toContinue);
return 0;
}
我的目标是能够在用户输入任何变量的垃圾时使用异常处理。
答案 0 :(得分:5)
如果你看看documentation,你会发现它是在C ++ 11中引入的。您必须使用-std=c++11
选项编译代码才能启用这些功能,因为默认情况下代码不会编译为C ++ 11。
Drew评论说如果你使用的是C ++ 03,你可以使用
答案 1 :(得分:2)
事实证明我需要这个才能让它发挥作用......
g++ -std=c++0x ./main.cpp