스트링 공백으로 split 하기

C++에서 단어들이 공백으로 나눠진 스트링이 있다고 할 때 스플릿 하기 제일 괜찮은 방법이 뭔가요? 빠른 방법 말고 보기 좋은 방법이요

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    다음과 같은 방법은 어떨까요?

    #include <iostream>
    #include <sstream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        string s("string to split");
        istringstream iss(s);
    
        do
        {
            string sub;
            iss >> sub;
            cout << "Substring: " << sub << endl;
    
        } while (iss);
    
    }
    

    다른 방법으로는 스탠다드 라이브러리를 이용하는 방법이 있지요

    아마 이게 좀 더 보기 좋은 코드 같네요.

    #include <iostream>
    #include <string>
    #include <sstream>
    #include <algorithm>
    #include <iterator>
    #include <vector>
    
    int main() {
        using namespace std;
        string sentence = "string to split";
        istringstream iss(sentence);
    
        //단어를 출력하려면
        copy(istream_iterator<string>(iss),
             istream_iterator<string>(),
             ostream_iterator<string>(cout, "\n"));
    
        //단어를 container에 저장하려면
        vector<string> words;
        copy(istream_iterator<string>(iss),
             istream_iterator<string>(),
             back_inserter(words));
    
        //벡터를 바로 생성하려면
        vector<string> wordsVector{istream_iterator<string>{iss},
                          istream_iterator<string>{}};
    }
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.