728x90
반응형
>>[C++ 관련 모든 글 보기]
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 123hah ahha"를 각 변수에 알맞게 넣은 예제입니다.
#include<iostream>
#include<sstream>
int main() {
std::istringstream 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::ostringstream oss;
int inta = 10;
std::string str = " test_string";
oss << "test " << inta << str <<std::endl;
std::cout<< oss.str();
}
3) stringstream로 문자열 저장 후 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 (문자열 format 사용하여 입력)
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.clear();
oss.str("");
oss << "test 2";
return 0;
}
//출력 결과 test 2
>>[C++ 관련 모든 글 보기]
728x90
반응형
'ProgrammingLang > c++' 카테고리의 다른 글
[C++ 개발자되기] 9. type casting (cast operator) (3) | 2019.11.15 |
---|---|
[C++ 개발자되기] 8. binary file read 및 write (3) | 2019.09.09 |
[C++ 개발자되기] 5. bind 사용법 (0) | 2019.07.23 |
[C++ 개발자되기] 4. lambda 사용법 (0) | 2019.07.19 |
[C++ 개발자되기] 3. C++에서 Thread 사용법 (추가 정리 필요) (2) | 2019.07.18 |