반응형

C++에서 istringstream, ostringstream, stringstream은 문자열을 읽고 쓰기 위한 스트림 클래스입니다.

  • istringstream: 입력 문자열을 읽기 위한 스트림 클래스입니다.
  • ostringstream: 출력 문자열을 쓰기 위한 스트림 클래스입니다.
  • stringstream: 입력 및 출력 문자열을 읽고 쓰기 위한 스트림 클래스입니다.

istringstream

예를 들어, istringstream 클래스는 문자열에서 데이터를 읽어들일 때 사용할 수 있습니다.

문자열을 istringstream 객체에 넣고, 해당 객체를 이용하여 값을 추출하면 됩니다.

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main() {
    string str = "123 456";
    istringstream iss(str);
    int num1, num2;
    iss >> num1 >> num2;
    cout << num1 << " " << num2 << endl;
    return 0;
}

위 코드는 문자열 "123 456"을 istringstream 객체에 넣고, >> 연산자를 이용하여 정수형 변수 num1과 num2에 값을 추출한 후, 이를 출력하는 예시입니다. 결과는 다음과 같습니다.

123 456

ostringstream 

ostringstream 클래스는 출력 문자열을 쓰기 위한 스트림 클래스로, 다음과 같이 사용할 수 있습니다.

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main() {
    ostringstream oss;
    int num1 = 123, num2 = 456;
    oss << num1 << " " << num2;
    string str = oss.str();
    cout << str << endl;
    return 0;
}

위 코드는 ostringstream 객체 oss를 만들고, << 연산자를 이용하여 num1과 num2의 값을 oss에 쓰고, 이를 문자열로 변환하여 출력하는 예시입니다. 결과는 다음과 같습니다.

123 456

stringstream 

stringstream 클래스는 입력 및 출력 문자열을 읽고 쓰기 위한 스트림 클래스로, istringstream과 ostringstream의 기능을 모두 포함합니다. 이를 사용하는 방법은 다음과 같습니다.

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

int main() {
    string str = "123 456";
    stringstream ss(str);
    int num1, num2;
    ss >> num1 >> num2;
    cout << num1 << " " << num2 << endl;

    ss.str("");
    ss << "789";
    string new_str = ss.str();
    cout << new_str << endl;

    return 0;
}

위 코드는 stringstream 객체 ss를 만들고, istringstream의 예시와 같이 str을 이용하여 num1과 num2의 값을 읽은 후 출력합니다. 그 다음에는 ss.str("")을 이용하여 ss의 값을 초기화하고, ss << "789"를 이용하여 "789"라는 문자열을 ss에 쓰고, 이를 문자열로 변환하여 출력합니다. 결과는 다음과 같습니다.

123 456
789

 

반응형

'C, C++' 카테고리의 다른 글

[C#] delegate (대리자)  (0) 2022.10.11
[C#] ThreadPool 클래스  (0) 2022.07.04
[C/C++]explicit  (0) 2021.12.01
[C/C++]스마트 포인터(smart pointer)  (0) 2021.11.22
[C/C++] accumulate 사용법과 주의사항  (0) 2021.07.09

+ Recent posts