이우의 개발일지
[C/C++] stringstream 사용법 본문
stringsteam은 언제 사용해야할까?
프로그래머스 문제 중 가장 많이 받은 선물이란 문제가 있다.
여기서 누가 누구에게 선물을 줬는지 입력을 받을 때
["a b", "b a", "c a", "a c", "a c", "c a"] |
이런식으로 "a b" 이면, a가 b에게 선물을 줬다. 라는 입력이다.
이 입력을 처리할려면 a와 b를 따로 구분하는 코드를 짜야하는데, 이 역할을 stringstream이 해준다.
for(int i = 0; i < gifts.size(); i++) {
string from, to;
stringstream parse(gifts[i]);
parse >> from >> to;
int fromIdx = m[from], toIdx = m[to];
count[fromIdx][toIdx]++;
point[fromIdx]++;
point[toIdx]--;
}
위 코드를 해석해보자면, gifts[i] 안에 들어있는 변수가 "A B" 가 들어있다면, 이 변수를 A와 B로 쪼개서 parse >>from >> to 처럼 from 과 to에 각각 A, B를 할당해준다.
stringstream 예시
만약, string 이 아니라 int형이면 어떻게 될까?
string str1 = "1D2S#10S";
string str2 = "1111DAWV2S#10S";
stringstream ss1(str1);
stringstream ss2(str2);
int num1, num2;
while (ss1 >> num1) cout << num1 << endl;
while (ss2 >> num2) cout << num2 << endl;
위 코드를 돌리면 아래 결과가 출력 된다.
1 1111
int 형 분리 예시
#include <sstream>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int main(void) {
int num, num2;
string st1 = "123 456";
stringstream ss1(st1);
ss1 >> num >> num2 ;
cout << num << " " << num2 << endl;
return 0;
}
123 456
이렇게 출력됨.
반응형
'Coding' 카테고리의 다른 글
[백준/C++] 1193번 분수찾기 코딩 (0) | 2024.05.15 |
---|---|
[백준/C++] 2941번 크로아티아 알파벳 (0) | 2024.05.15 |
[C++] 백준 10828번 스택 (0) | 2024.05.10 |
[C++] 백준 1316번 그룹 단어 체커 (0) | 2024.05.10 |
[C/C++] map 함수 / STL 함수 (0) | 2024.05.07 |