여러 줄의 문자열, 숫자 를 space, comma 를 구분하며 여러줄을 입력받을때
#include <iostream> #include <string> #include <sstream> #include <vector> using namespace std; int main() { int cnt; string str; vector<vector<string>> strs; cin >> cnt; string line; getline(cin, line); strs.resize(cnt); for (int i = 0; i <cnt; ++i) { string cur; getline(cin, cur); stringstream ss(cur); while (getline(ss, str, ',')) { strs[i].push_back(str); } } for (auto& el : strs) { for (auto& elIn : el) { cout << elIn << endl; } } }
cin >> xxx;
cin 은 개행문자를 입력받지 않는다
5\n 을 처음 입력시 5에 대해서 cnt 에 저장하고 남은 \n 은 getline 으로 받고 버려줍니다
(다른 방법도 있지만 코딩테스트 때의 입력 데이터를 만들 기 위해서는 간단하게 data 만 만들기 위함)
해당 횟수만큼의 row 를 입력하는 케이스가 보통이니 그만큼의 횟수의 row 를 입력할테고 대부분은 space 로 구분 하거나 (숫자나 space 가 없는 스트링의경우) space 가 있는 string 이 있을 수 있다면 아마 csv 처럼, 로 구분해 입력 하게 됩니다
string cur;
getline(cin, cur);
stringstream ss(cur);
while (getline(ss, str, ‘,’)) {
strs[i].push_back(str);
}
위 처럼 각 line 을 받아 stringstream 에 넣고 getline 의 delimeter 파라메터를 통해서 구분자를 통해 분리해 각 데이터에 쌓을 수 있습니다
댓글 남기기