我正在使用和编程两个在整数和字符串之间交换的函数。第一个函数,字符串intToStr(int x),使用:
1) std::basic_string::push_back
完美无缺。
但是,当第二个函数int str2Int(const string& str)使用以下成员函数时,
1) std::basic_string::pop_back
2) std::basic_string::back
我收到了以下错误:
1) error C2039: 'back' : is not a member of 'std::basic_string<_Elem,_Traits,_Ax>'
2) error C2039: 'pop_back' : is not a member of 'std::basic_string<_Elem,_Traits,_Ax>'
完整的代码如下:
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
string intToStr(int x)
{
bool isNegative;
int cnt = 0;
if(x<0)
{
isNegative = true;
x = -x;
}
else
{
isNegative = false;
}
string s;
while(x)
{
s.push_back('0'+x%10);
x /= 10;
cnt ++;
if(cnt%3==0 & x!=0)
s.push_back(',');
}
if(isNegative)
s.push_back('-');
reverse(s.begin(),s.end()); //#include <algorithm>
return s;
}
int str2Int(const string &str)
{
int result=0, isNegative=0;
char temp;
string tempStr = str;
reverse(tempStr.begin(),tempStr.end());
// the following code snippet doesn't work??
// pop_back() and back() are not member function??
while(!tempStr.empty())
{
temp = tempStr.back();
tempStr.pop_back();
if(temp==',')
continue;
else if(temp=='-')
isNegative = 1;
else
result = result*10 + (temp-'0');
}
return isNegative? -result:result;
}
答案 0 :(得分:4)
这些成员函数仅存在于C ++ 11中。您必须将代码编译为C ++ 11代码才能正确编译。
Visual Studio 2008附带的编译器不支持C ++ 11。您将需要使用更新的编译器。
您可以使用Clang,GCC或升级到Visual Studio 2012。