C++ STL

sstream

mintuchel 2023. 3. 7. 22:01

문자열을 한 줄에 받을때 쓰는 기법

 

stringstream은 일련의 문자를 포함하는 문자열 버퍼를 사용한다

 

stringstream은 여러가지 자료형이 한 줄로 들어올때

문자열을 파싱해야할때 매우 유용한 라이브러리

문자열에서 내가 원하는 자료형을 추출해야할때 쓰면 된다 

 

이 stringstream은 공백과 '\n'문자를 제외하고 문자열에 맞는 자료형을 빼낸다

 


[ 추출할 type설정하기 ]

 

data가 어떤 타입인지에 따라 추출되는게 달라진다

 

int data로 선언했으면 문자열에서 숫자만 파싱되고 ( 0-9 )

char data로 선언했으면 문자열에서 문자만 파싱되고 ( 숫자도 파싱됨 문자인 숫자로 취급되서 )

string data로 선언했으면 문자열에서 문자열이 파싱된다! ( 이땐 공백으로 구분되어 파싱됨 )

while(ss>>data) { //code }

 


1. 문자 추출

 

#include <string>
#include <sstream>

using namespace std;

int main() {
	string s = "koublibaly";
    
    // stringstream 생성
    stringstream ss;
    
    // stringstream load
    // stream에 문자열 s 집어넣기
    ss.str(s);
	
    char ch;
    
    while(ss >> ch) { cout << ch << endl; }
	
    // stream 초기화
    ss.str("");
    
    return 0;
}

 


2. 문자열 추출

 

#include <string>
#include <sstream>

using namespace std;

int main() {
	
	string s = "tuchel klopp guardiola wenger";
	
	// stringstream 생성
	stringstream ss;

	// 현재 스트림 값을 문자열 str로 바꾸기 (stream loading)
	ss.str(s);

	string temp;
	while (ss >> temp) {cout << temp << endl;}

	// 스트림 초기화
	ss.str("");

	return 0;
}

 

문자열을 공백과 \n 으로 구분하여 추출한다