programing

C ++ 문자열에서 마지막 문자 제거

new-time 2020. 5. 12. 21:50
반응형

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가 필요하지 않습니다.


int main () {

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

  cout<<str2; // output: 12

  return 0;
}

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

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

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

C ++ 11을 사용하면 길이 / 크기가 필요하지 않습니다. 문자열이 비어 있지 않으면 다음을 수행 할 수 있습니다.

if (!st.empty())
  st.erase(std::prev(st.end())); // Erase element referred to by iterator one
                                 // before the end

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

str.erase(str.rbegin())

불행히도 컴파일하지 않습니다

reverse_iterator

. normal_iterator로 변환 할 수 없기 때문입니다.이 경우 C ++ 11이 친구입니다.


길이가 0이 아닌 경우에도

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

참고 URL :

https://stackoverflow.com/questions/2310939/remove-last-character-from-c-string

반응형