C++ 문자열에서 마지막 문자 제거
C++ 문자열에서 마지막 문자를 삭제하려면 어떻게 해야 합니까?
나는 노력했다.st = substr(st.length()-1);
하지만 그것은 작동하지 않았다.
C++11을 사용하고 있는 경우는, 심플한 해결 방법.아마도 O(1) 시간:
st.pop_back();
변형이 없는 버전의 경우:
st = myString.substr(0, myString.size()-1);
이것으로 충분합니다.
#include <string> //string::pop_back & string::empty
if (!st.empty())
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;
}
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이 당신의 친구입니다.
경계 검사 또는 3진 연산자가 있는 빈 문자열에 대해 걱정하지 마십시오.
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;
}
길이가 0이 아닌 경우,
str[str.length() - 1] = '\0';
언급URL : https://stackoverflow.com/questions/2310939/remove-last-character-from-c-string
'programing' 카테고리의 다른 글
실행 중 PowerShell 출력을 파일로 리디렉션하는 방법 (0) | 2023.04.21 |
---|---|
Swift's Codable을 사용하여 사전에 인코딩하려면 어떻게 해야 합니까? (0) | 2023.04.21 |
목록을 목록으로 변환 (0) | 2023.04.21 |
iPhone SDK: loadView와 viewDidLoad의 차이점은 무엇입니까? (0) | 2023.04.21 |
테이블에 트리거가 있는 경우 OUTPUT 절과 함께 UPDATE를 사용할 수 없습니다. (0) | 2023.04.21 |