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

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


当前回答

这就是你所需要的:

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

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

其他回答

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

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

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

参考:std::string::erase(

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

这就是你所需要的:

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

if (!st.empty())
    st.pop_back();
if (str.size() > 0)  str.resize(str.size() - 1);

std::erase替代方法很好,但我喜欢- 1(无论是基于大小还是结束迭代器)-对我来说,它有助于表达意图。

BTW -真的没有std::string::pop_back吗?-看起来很奇怪。

如果长度非零,也可以

str[str.length() - 1] = '\0';