728x90

백준 1152번 단어의 개수라는 문제에서
문자열을 입력받고 해당 문자열에 있는 단어의 수를 구하는 문제를 풀던 중 새롭게 배운 stringstream에 대한 복습으로 글을 작성하게 되었습니다.

 

stringstream 이란?

C++ 표준 라이브러리에 포함된 클래스로, 문자열을 스트림으로 다룰 수 있게 해주는 도우미 클래스입니다.

즉 문자열에서 자료형을 필요에 따라 꺼낼때 유용하게 사용됩니다.

 

헤더 :  #include<sstream>

 

stringstream 사용법

문자열을 단어로 구분 

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

using namespace std;

int main()
{
    string str;
    getline(cin, str);

    // 공백을 구분자로 사용하여 문자열을 토큰으로 나누기
    stringstream ss(str);
    string token;
    int num = 0; // 단어의 개수를 0으로 초기화

    while (ss >> token)
    {
        num++;
    }

    cout << num;

    return 0;
}

위 코드는 입력한 string에서 공백을 구분자로 사용하여 단어로 나누는 코드입니다.

'>>'는 입력 스트림에서 데이터를 추출하는 연산자로 데이터 타입에 맞게 추출할 수 있습니다.

 

데이터 타입에 맞게 추출

#include <iostream>
#include <sstream>

int main() {
    std::string str = "42";
    int number;

    std::stringstream ss(str); // 문자열을 스트림으로 변환

    ss >> number; // 스트림에서 숫자를 추출하여 변수 number에 저장

    std::cout << "숫자: " << number << std::endl;

    return 0;
}

위 코드는 42라는 string을 42라는 int 로 변환하는 코드입니다.

 

#include <iostream>
#include <sstream> 

int main() {
    std::string name = "John";
    int age = 30;
    double height = 175.5;

    std::stringstream ss;

    // 문자열과 변수를 stringstream에 삽입
    ss << "Name: " << name << ", Age: " << age << ", Height: " << height;

    // stringstream에서 문자열 추출하여 출력
    std::cout << ss.str() << std::endl;

    return 0;
}

int, string 등 다양하게 stringstream에 삽입, 추출할 수 있습니다.

728x90

+ Recent posts