반응형
std :: string의 마지막 요소 가져 오기
약어가 있는지 또는 다음과 같은 문자열의 마지막 문자를 얻는 더 우아한 방법이 있는지 궁금합니다.
char lastChar = myString.at( myString.length() - 1 );
같은 myString.back()
것이 존재하지 않는 것 같습니다. 동등한 것이 있습니까?
C ++ 11 이상에서는 back
멤버 함수를 사용할 수 있습니다 .
char ch = myStr.back();
C ++ 03에서는 std::string::back
감독으로 인해 사용할 수 없습니다.하지만 다음 reverse_iterator
에서 반환 된 값을 역 참조하여이 문제를 해결할 수 있습니다 rbegin
.
char ch = *myStr.rbegin();
두 경우 모두 문자열에 실제로 적어도 하나의 문자가 있는지 확인하십시오! 그렇지 않으면 정의되지 않은 동작이 발생 하며 이는 나쁜 일입니다.
도움이 되었기를 바랍니다!
먼저 문자열의 길이를 확인하고 다음과 같이 할 수 있습니다.
if (!myStr.empty())
{
char lastChar = *myStr.rbegin();
}
back
일반 컨테이너의 멤버 함수와 문자열에 대해 누락 된 기능을 구현하는 일반 함수에 위임 하는 함수 템플릿 을 작성할 수 있습니다.
template <typename C>
typename C::reference back(C& container)
{
return container.back();
}
template <typename C>
typename C::const_reference back(const C& container)
{
return container.back();
}
char& back(std::string& str)
{
return *(str.end() - 1);
}
char back(const std::string& str)
{
return *(str.end() - 1);
}
그러면 문자열인지 벡터 back(foo)
인지 걱정하지 않고 말할 수 있습니다 foo
.
*(myString.end() - 1)
아마도? 그것도 우아하지 않습니다.
python-esque myString.at(-1)
는 이미 부풀린 클래스를 너무 많이 요구합니다.
참고 URL : https://stackoverflow.com/questions/4884548/get-the-last-element-of-a-stdstring
반응형
'program story' 카테고리의 다른 글
2.3에서 Done SoftInput 작업 레이블이있는 여러 줄 EditText (0) | 2020.10.06 |
---|---|
열의 각 고유 값에 대해 첫 번째 행만 선택하는 방법 (0) | 2020.10.05 |
여러 DOS 명령을 병렬로 실행하는 방법은 무엇입니까? (0) | 2020.10.05 |
문자열의 문자가 문자인지 확인하는 방법은 무엇입니까? (0) | 2020.10.05 |
Xcode 5 및 iOS 7 : 아키텍처 및 유효한 아키텍처 (0) | 2020.10.05 |