std::string의 개행 문자들을 다 지우는 방법


string의 개행 문자들(\n, \r, \t 포함)을 다 지우고 싶어요. 지금 밑에 방법 쓰고 있는데 더 좋은 방법 있을까요? 아, 그리고 앞에 있는 개행 문자를 지우는 방법도 알려주세요

소스코드

std::string s;
s.erase(s.find_last_not_of(" \n\r\t")+1);
  • 2016년 01월 05일에 작성됨

조회수 899


1 답변


좋아요
0
싫어요
채택취소하기

경우에 따라 다르긴 한데 저는 3가지 방법 써요

#include <algorithm> 
#include <functional> 
#include <cctype>
#include <locale>

//앞에 있는 개행 문자 제거
static inline std::string &ltrim(std::string &s) {
        s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun<int, int>(std::isspace))));
        return s;
}

//뒤에 있는 개행 문자 제거
static inline std::string &rtrim(std::string &s) {
        s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end());
        return s;
}

//양쪽 끝의 개행 문자 제거
static inline std::string &trim(std::string &s) {
        return ltrim(rtrim(s));
}
  • 2016년 01월 05일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close