ProgrammingLang/c++

[C++ 개발자되기] 6. istringstream, ostringstream, stringstream 사용법

jinkwon.kim 2019. 7. 24. 23:27
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++ 관련 모든 글 보기]

 

[C++ 개발자되기] 1. C에는 없고 C++만 있는 것

본 Serise는 C개발자가 C++개발자로 되는 과정에서 겪은 시행 착오를 정리하는 것 입니다. 그래서 목차가 없습니다. 생존을 위한 정리 입니다. 1. 현재 언어 별 스펙 점검 - C : 7년, C로 왠만한거 다 할 수 있음...

doitnow-man.tistory.com

 

 

 

728x90
반응형