인트로
안녕하세요. 오늘은 C++의 Stringstream 사용법에 대해 포스팅하겠습니다.
C++에서 여러가지 자료형이 한 줄에 들어오면 파싱해서 용도에 맞게 사용할 필요가 있는데요.
특히 "이름 날짜 내용"과 같은 문자열로 한 줄의 데이터로 들어오면 각각 이름, 날짜, 내용등으로 파싱해서 사용하기 위해 많이 활용됩니다. 그 때 stringstream이 굉장히 유용한 라이브러리입니다.
1) 문자열을 나누는 stringstream
C++에서 stringstream은 주어진 문자열에서 필요한 자료형에 맞는 정보를 꺼낼 때 유용하게 사용됩니다.
stringstream에서 공백과 '\n'을 제외하고 문자열에서 맞는 자료형의 정보를 빼냅니다.
˙ #include <sstream> 전처리 헤더를 필수로 포함해야 합니다.
˙ stream.str(string str) 은 현재 stream의 값을 문자열 str로 바꿉니다.
int num;
string str = "123 456";
stringstream stream;
stream.str(str);
while(stream1 >> num ) cout << num << endl;
2) stringstream 초기화
stringstream은 stream.str(""); 구문을 통해 초기화합니다.
int num;
string str = "123 456";
stringstream stream;
stream.str(str);
while(stream1 >> num ) cout << num << endl;
stream.str("");//초기화
3) stringstream을 활용해 날짜를 초로 바꾸기
stringstream을 통해 주어진 문자열을 알맞게 변형한 후, 초(second)로 변환하는 C++ 코드입니다.
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
int main(void){
vector<long long> time;
string str = "2019:06:30 12:00:30";//연 월 일 시 분 초
for(int i=0;i<str.size();i++){
if(str[i] == ':')
str[i] = ' ';
}
long long num = 0;
stringstream stream;
stream.str(str);
while(stream >> num){
time.push_back(num);
}
long long second = 0;
second += time[0] * 365 * 24 * 60 * 60;//연
second += time[1] * 30 * 24 * 60 * 60;//월
second += time[2] * 24 * 60 * 60;//일
second += time[3] * 60 * 60;//시
second += time[4] * 60;//분
second += time[5];//초
cout << second << endl;
return 0;
}
'BE > C++' 카테고리의 다른 글
[C++][STL] Stack 기본 사용법 및 예제 (3) | 2020.11.03 |
---|---|
[C++] 이차원 배열 동적할당하기 (0) | 2020.11.02 |
[C++][STL] map 사용법 정리 (11) | 2020.04.05 |
[C++][OpenCV] Opencv과 VisualStudio 연동하기 (0) | 2020.04.02 |
[C++][Vector] 범위 기반 반복문 (0) | 2020.03.30 |