Notice
Recent Posts
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
관리 메뉴

이우의 개발일지

[C/C++] stringstream 사용법 본문

Coding

[C/C++] stringstream 사용법

공대이우 2024. 5. 7. 17:55

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

이렇게 출력됨. 

 

반응형