stringstream

2022. 11. 10. 01:45c++

728x90
1. stringstream 이란?

문자열에서 작동하는 스트림 클래스 입니다.

이 클래스 객체는 일련의 문자를 포함하는 문자열 버퍼를 사용하고 있습니다.

문자열에서 내가 원하는 자료형의 데이터를 추출할 때 사용합니다.

 

2. 헤더 정보

#include <sstream>를 include 하면 사용이 가능합니다.

 

3. 기본 사용법
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
string str1 = "1D2S#10S";
string str2 = "1111DAWV2S#10S";

그러면 char형으로 한번 받아보겠습니다.

string str1 = "1D2S#10S";
string str2 = "1111DAWV2S#10S";
stringstream ss1(str1);
stringstream ss2(str2);
char ch1, ch2;

while (ss1 >> ch1) cout << ch1 << " ";
while (ss2 >> ch2) cout << ch2 << " ";
1 D 2 S # 1 0 S
1 1 1 1 D A W V 2 S # 1 0 S

이번에는 str1, str2에 들어가 있는 모든 것들이 출력되었습니다.

예제를 통해 보면 알겠지만, 처음 int형으로 받게 되면 숫자로 되어있는부분을 받아옵니다.

하지만, string은 char형으로 이루어져 있기 때문에 모든 문자열을 받아올 수 있습니다.

string str1 = "1D2S#10S";
stringstream ss1(str1);

cout << ss1.get() << " ";
cout << ss1.get() << " ";
cout << ss1.get() << " ";
cout << ss1.get() << " ";
cout << ss1.get() << " ";
ss1.unget();
cout << ss1.get() << " ";
return;
49 68 50 83 35 35

- get() : 커서를 하나씩 옮기면서 값을 반환합니다.

 

- unget() : 커서를 앞으로 다시 옮깁니다.

 

그래서 보시면 아스키코드로 나오는데, 마지막에 unget()을 사용하고

 

다시 get()으로 받아온 값을 출력해보니, 그 전과 값이 똑같습니다.

 

stringstream 을 잘 사용하면 엄청 유용한 기능이 될 것 같습니다.

728x90

'c++' 카테고리의 다른 글

char배열에 문자를 입력받아서 숫자로 변환  (0) 2022.12.19
(c++) string 클래스 변환-c_str() 함수  (0) 2022.11.21
size_t 자료형  (0) 2022.11.10
assert 함수 (c++)  (0) 2022.11.10
(c,c++) double형 출력 등등  (0) 2022.11.10