해결된 질문
작성
·
378
·
수정됨
0
안녕하세요. 강사님.
split 강의를 보다가
split 함수에 들어가는 input 에 대응되는 인자를
cin 메소드로 입력받게 했는데요.
이상하게 첫 번째 token 만 받아와져서
왜 해당 코드에선 정상 작동하지 않는지 궁금합니다.
=============================================
cin 이 공백 기준으로 구분 짓는다는 것을 잊었네요.
std::getline 를 통해서 해결할 수 있는 것을 확인했습니다.
=============================================
#include <bits/stdc++.h>
using namespace std;
// split
vector<string> split(string input, string delimiter)
{
vector<string> ret;
long long pos;
string token = "";
while((pos = input.find(delimiter)) != string::npos)
{
token = input.substr(0, pos);
ret.push_back(token);
input.erase(0, pos + delimiter.length());
}
ret.push_back(input);
return ret;
}
int main(void)
{
string abc, delimiter;
cout << "input : ";
// 입력을 받는 부분
cin >> abc;
// abc = "a b c";
delimiter = " ";
vector<string> result = split(abc, delimiter);
for(auto it : result)
cout << it << '\n';
return 0;
}