C++에서는 문자열을 자르려면 어떻게 하나요?


자바에서는 밑에 같이 쓸 수 있었는데 C++에서는 좀 쉬운 방법 없나요?

String str = "The quick brown fox";
String[] results = str.split(" ");
  • 2016년 06월 01일에 수정됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.
  • 2016년 01월 07일에 작성됨

조회수 353


1 답변


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

1. Boost tokenizer사용

/*c++11이상*/
#include <iostream>
#include <string>
#include <boost/tokenizer.hpp>

using namespace std;
using namespace boost;


int main(int, char**)
{
    string text = The quick brown fox"; //token할 스트링

    char_separator<char> sep(", "); //token delim
    tokenizer<char_separator<char>> tokens(text, sep);
    for (const auto& t : tokens) {
        cout << t << "." << endl;
    }
}

/*c++11미만*/
#include <iostream>
#include <string>
#include <boost/foreach.hpp>
#include <boost/tokenizer.hpp>

using namespace std;
using namespace boost;

int main(int, char**)
{
    string text = "token, test   string"; //token할 스트링

    char_separator<char> sep(", "); //token delim
    tokenizer< char_separator<char> > tokens(text, sep);
    BOOST_FOREACH (const string& t, tokens) {
        cout << t << "." << endl;
    }
}

2. stringstream

  std::string str = "The quick brown fox"; //token할 스트링

  // string으로 부터 stringstream 생성
  std::stringstream strstr(str);

  // 이터레이터를 써서 벡터에 공백을 제외하고 copy
  std::istream_iterator<std::string> it(strstr);
  std::istream_iterator<std::string> end;
  std::vector<std::string> results(it, end);

  // 출력
  std::ostream_iterator<std::string> oit(std::cout);
  std::copy(results.begin(), results.end(), oit);

와 같이 쓰시면 됩니다.

  • 2016년 01월 07일에 작성됨

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

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