ska*_*zhy 195 c++ string substring
如何从C++字符串中删除最后一个字符?
我试过st = substr(st.length()-1);但它没用.
小智 363
如果您使用C++ 11,可以使用简单的解决方案 也可能是O(1)时间:
st.pop_back();
Run Code Online (Sandbox Code Playgroud)
Mat*_* M. 180
对于非变异版本:
st = myString.substr(0, myString.size()-1);
Run Code Online (Sandbox Code Playgroud)
Ste*_*314 23
if (str.size () > 0) str.resize (str.size () - 1);
Run Code Online (Sandbox Code Playgroud)
std :: erase替代方案很好,但我喜欢" - 1"(无论是基于大小还是结束迭代器) - 对我而言,它有助于表达意图.
BTW - 真的没有std :: string :: pop_back吗? - 好像很奇怪.
RC.*_*RC. 18
buf.erase(buf.size() - 1);
Run Code Online (Sandbox Code Playgroud)
这假设您知道该字符串不为空.如果是这样,你会得到一个out_of_range例外.
rib*_*mar 14
str.erase( str.end()-1 )
参考:std :: string :: erase()原型2
不需要c ++ 11或c ++ 0x.
int main () {
string str1="123";
string str2 = str1.substr (0,str1.length()-1);
cout<<str2; // output: 12
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这就是您所需要的:
#include <string> //string::pop_back & string::empty
if (!st.empty())
st.pop_back();
Run Code Online (Sandbox Code Playgroud)