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

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


当前回答

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

参考:std::string::erase(

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

其他回答

#include<iostream>
using namespace std;
int main(){
  string s = "Hello";// Here string length is 5 initially
  s[s.length()-1] = '\0'; //  marking the last char to be null character
  s = &s[0]; // using ampersand infront of the string with index will render a string from the index until null character discovered
  cout<<"the new length of the string "<<s + " is " <<s.length();
  return 0;
}
buf.erase(buf.size() - 1);

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

int main () {

  string str1="123";
  string str2 = str1.substr (0,str1.length()-1);

  cout<<str2; // output: 12

  return 0;
}

如果长度非零,也可以

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

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

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

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