1. istringstream과 ostringstream과 stringstream 은 무엇인가?
문자열을 다룰 때 유용하게 사용 가능한 Class이다.
1) istringstream
- 문자열 포맷을 parsing 할 때 사용한다.
2) ostringstream
- 문자열 format을 조합하여 저장할 때 사용합니다.
3) sstringstream
- 문자열에서 내가 원하는 자료형의 데이터를 추출할 때 사용한다.
2. 헤더 정보
#include <sstream>를 include 하면 사용 가능하다.
3. 기본 사용법
1) istringstream로 문자열 format을 분해하기
- 다음 예제에서 space 또는 tap으로 구분된 "test 123 123 hah ahha" 를 각 변수에
알맞게 넣은 예제이다.
#include<iostream>
#include<sstream>
int main(void)
{
std::istringtream iss("test 123 123hah ahha");
std::string str, str1, str2;
int inta;
std::cout << iss.str() << std::endl;
iss >> str >> str1 >> str2 >> inta;
std::cout << "str : " << str << std::endl;
std::cout << "str1 : " << str1 << std::endl;
std::cout << "Str2 : " << str2 << std::endl;
std::cout << "inta : " << inta << std::endl;
}
2) ostringstream로 문자열 format으로 문자열 생성하여 저장
#include <iostream>
#include <sstream>
int main()
{
std::stringstream oss;
int inta = 10;
std::string str = "test_string";
oss << "test" << inta << str << std::endl;
std<<cout<<oss.str();
}
3) stringtream로 문자열 저장 후 parsing 하기
(1) stringstream에 문자열 넣는 방법 1 (문자열로 입력)
(2) stringstream에 문자열 넣는 방법 2 (문자열 format 사용하여 입력)
#include<iostream>
#include<sstream>
int main()
{
//stringstream에 문자열 넣는 방법 1 (문자열로 입력)
std::stringstream ss1("test 1 2 3 4 5");
std::string str;
// while(ss1 >> str)이란, 더 이상 str의 자료형에 맞는 정보가 없을 때까지
// 계속 스트림에서 str으로 자료를 추출/복사하는 것이다. 끝에 도달하면 끝난다.
while(ss1>>str)
{
std::cout << str << std::endl;
}
// stringstream에 문자열 넣는 방법 2 (문자열 fomat 사용하여 입력)
std::stringstream ss2;
ss2 << "1" << '' << -1 << '' << 2 << 3;
while (ss2 >> str)
{
std::cout << str << std::endl;
}
return 0;
}
4. 응용 사용법
1)ostringstream 재사용 초기화
#include <iostream>
#include <sstream>
int main()
{
std::ostringstream oss;
oss << "test 1";
oss.dear();
oss.str("");
oss << "test 2";
return 0;
}
'컴퓨터 프로그래밍 공부 > 자료구조와 알고리즘' 카테고리의 다른 글
그리디 알고리즘 - 최단 작업 우선 스케줄링 (0) | 2023.12.01 |
---|---|
std::deque (0) | 2023.10.27 |
C++ std::List (1) | 2023.10.26 |
우선순위 큐와 힙 (Priority Queue & Heap) (0) | 2023.06.07 |
시간 복잡도 & 자료구조와 알고리즘이란? (0) | 2023.02.20 |