如何从c++字符串中删除最后一个字符?
我尝试了st = substr(st.length()-1);但这并没有起作用。
如何从c++字符串中删除最后一个字符?
我尝试了st = substr(st.length()-1);但这并没有起作用。
当前回答
不用担心边界检查或使用三元操作符的空字符串:
str.erase(str.end() - (str.length() > 0) ? 1 : 0), str.end());
其他回答
#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;
}
对于非突变版本:
st = myString.substr(0, myString.size()-1);
简单的解决方案,如果你使用c++ 11。也可能是O(1)次:
st.pop_back();
这就是你所需要的:
#include <string> //string::pop_back & string::empty
if (!st.empty())
st.pop_back();
int main () {
string str1="123";
string str2 = str1.substr (0,str1.length()-1);
cout<<str2; // output: 12
return 0;
}