我会尝试从以下代码中的给定字符串中删除特定字符。
int main(void){
string query="a*de*da";
string org;
uint8_t rmc='*';
std::vector<string::const_iterator> wpos;
for(string::const_iterator itr = org.begin();
itr!=org.end();
++itr){
if(*itr==rmc){
wpos.push_back(itr);
}
}
uint64_t wcnt=0;
for(auto witr: wpos){
org.erase( witr-(wcnt++) );
}
query=org;
return 0;
}
在这段代码中,我希望查询=“adeda”但是,我收到了错误
error: no matching function for call to ‘std::basic_string<char>::erase(__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >)’
org.erase(witr-wcnt);
我的实验设置是CentOS6.7上的devtoolset-3的g ++ 4.9.2
答案 0 :(得分:1)
从C ++ 98到C ++ 11,std::string::erase
的签名从
iterator erase(iterator p)
到
iterator erase(const_iterator p)
似乎g ++ 4.9.2仍然使用旧版本。如果您将string::const_iterator
更改为string::iterator
,则应编译您的示例。