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
'프로그래밍 > C++' 카테고리의 다른 글
[C++] STL map 정리 (0) | 2023.08.05 |
---|---|
[C++] (string , vector) 반전,뒤집기 : reverse 함수 (0) | 2023.08.01 |
[C++] 공백을 포함한 문자열 입력받기(getline) (0) | 2023.07.31 |
[C++] 아스키 코드를 정수로 변환하기 (0) | 2023.07.31 |
[C++] 문자를 아스키 코드로 형변환 하는법 (0) | 2023.07.31 |