【问题标题】:Erase a specific character from a given string C++11从给定字符串 C++11 中擦除特定字符
【发布时间】:2017-03-23 08:39:15
【问题描述】:

我会尝试从以下代码中的给定字符串中删除特定字符。

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;                                                                                                                                                                                                 
} 

在这段代码中,我希望 query="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);

我的实验设置是g++ 4.9.2 of devtoolset-3 on CentOS6.7

【问题讨论】:

    标签: string c++11 erase


    【解决方案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,您的示例应该可以编译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 2013-09-30
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      相关资源
      最近更新 更多