반응형
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
반응형
'programing' 카테고리의 다른 글
DOM 요소를 첫 번째 자식으로 설정하는 방법은 무엇입니까? (0) | 2020.05.12 |
---|---|
PowerShell에서 명령 실행 타이밍 (0) | 2020.05.12 |
Android Studio 렌더링 문제 (0) | 2020.05.12 |
Angular 2 베타 17 : 'map'속성이 'Observable'유형에 없습니다. (0) | 2020.05.12 |
문자열은 변경할 수 없습니다. (0) | 2020.05.12 |