我的系统:国产飞腾cpu,银河麒麟系统
我的c++环境:code::blocks 13.12
gcc版本信息:
gcc (Ubuntu/Linaro 5.4.0-6kord1~16.04.12) 5.4.0 20160609
在code::blocks搜索路径设置如下
code::blocks==>settings==>compiler==>Search directories
/usr/bin
/usr/include/c++/5.4.0
/usr/local/include
/usr/local/include/wx-3.1
我碰到的问题:以下代码在编译时出错:
#include
#include
#include
#include
#include
#include
using namespace std;
struct SeisEvent
{ int evtYear;
int evtMonth;
int evtDay;
int evtHour;
int evtMinute;
int evtSecond;
double evtLatitude;
double evtLongitude;
float evtMagnitude;
int evtAccuracy;
int evtDepth;
int evtSerialNumber;
char eqAddress[40];
};
int main()
{
SeisEvent event;
string s;
int i = 0;
ifstream fin("ml2.eqt",ios_base::in);
while(fin.peek()!=EOF)
{
getline(fin,s);
try
{
event.evtYear = std::stoi(s.substr(0,5),0,10);
}
catch(string ss)
{
ss = '第' + to_string(i) + '条记录里的年有问题!';
throw(ss);
cout <<ss;
}
try
{
event.evtMonth = std::stoi(s.substr(5,2),0,10);
}
catch(string ss)
{
ss = '第' + to_string(i) + '条记录里的月有问题!';
throw(ss);
cout <<ss;
}
i++;
}
return 0;
}
出错提示这句(event.evtYear = std::stoi(s.substr(0,5),0,10);)有问题: ‘stoi’ is not a member of ‘std’
但是经检查在头文件/usr/include/c++/5.4.0/string里有
#include <basic_string.h>
而在/usr/include/c++/5.4.0/bits/basic_string.h里有:
inline int
stoi(const string& __str, size_t* __idx = 0, int __base = 10)
{ return __gnu_cxx::__stoa<long, int>(&std::strtol, "stoi", __str.c_str(),
__idx, __base); }/include
解决应用stoi函数将字符串转换为数字的问题
不知怎么回事?谁能解释。
编译的时候设置了C++11特性么