알고리즘에 유용한 팁들2

어떤 문자열을 받았고, 그것을 ' '기준으로, 즉 공백문자를 기준으로 나누고 싶다면, strtok를 활용해도 되지만 C++에서는 더 간단한 방법이 있다.

<include sstream>
<include unordered_map>
<include vector>
vector <string> word;
string target="I am a good boy";
istringstream ss(target);
string stringbuffer;
unordered_map <string,int> map;
while(getline(ss,stringbuffer,' ')){
	if(map[stringbuffer]==0){
    	map[stringbuffer]=1;
        word.push_back(stringbuffer);
    }
}

word의 값들을 찍어보면 다음과 같이 나온다.

배운점

  1. word라는 string형 벡터안에는 같은 단어가 여러개 들어가지 않게 하기 위해 map을 만들었고, map[string형]의 value가 1개 이상 있으면 넣지 않게 한다. (마치 set의 기능처럼)
  2. istringstream에서 i는 input이다.
  3. getline안에 구분자를 넣어줄 때는 " "이 아닌 ' '을 넣어야 한다.
  4. istringstream을 쓰기 위해서는 sstream을 include해주자!

좋은 웹페이지 즐겨찾기