如何从c++字符串中删除最后一个字符?

我尝试了st = substr(st.length()-1);但这并没有起作用。


当前回答

str.erase( str.end()-1 )

参考:std::string::erase(

不需要c++11或c++0x。

其他回答

str.erase(str.begin() + str.size() - 1)

Str.erase (str.rbegin())不能编译,因为reverse_iterator不能转换为normal_iterator。

在这种情况下,c++ 11是你的朋友。

简单的解决方案,如果你使用c++ 11。也可能是O(1)次:

st.pop_back();
buf.erase(buf.size() - 1);

这假设您知道字符串不是空的。如果是这样,您将得到一个out_of_range异常。

这就是你所需要的:

#include <string>  //string::pop_back & string::empty

if (!st.empty())
    st.pop_back();

对于非突变版本:

st = myString.substr(0, myString.size()-1);