C ++ 문자열에서 마지막 문자 제거 마지막 문자를 제거하려면 어떻게해야합니까? 시도했지만

C ++ 문자열에서 마지막 문자를 제거하려면 어떻게해야합니까?

시도했지만 st = substr(st.length()-1);작동하지 않았습니다.



답변

변경되지 않는 버전의 경우 :

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

답변

C ++ 11을 사용하는 경우 간단한 솔루션. 아마 O (1) 시간 :

st.pop_back();

답변

if (str.size () > 0)  str.resize (str.size () - 1);

std :: erase 대안은 좋지만 “-1″(크기 또는 종료 반복자를 기반으로 함)을 좋아합니다. 의도를 표현하는 데 도움이됩니다.

BTW-실제로 std :: string :: pop_back이 없습니까? -이상해 보인다.


답변

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

이것은 문자열이 비어 있지 않다는 것을 알고 있다고 가정합니다. 그렇다면 out_of_range예외 가 발생합니다.


답변

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

참조 : std :: string :: erase () 프로토 타입 2

c ++ 11 또는 c ++ 0x가 필요하지 않습니다.


답변

그게 당신이 필요한 전부입니다 :

#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;
}