컴공생의 다이어리
[c++] 문자열 스트림 (std::stringstream) 본문
#include <iostream>
#include <sstream>
int main() {
std::istringstream ss("123");
int x;
ss >> x;
std::cout << "입력 받은 데이터 :: " << x << std::endl;
return 0;
}
더보기
입력 받은 데이터 :: 123
sstream에는 std::istringstream이 정의되어 있는데 이는 마치 문자열을 하나의 스트림이라 생각하게 해주는 가상화 장치라고 보면 된다.
std::istringstream ss("123");
예를 들어 위를 통해 문자열 '123'이 기록되어 있는 입력 스트림을 생성하였다. 마치 파일에 '123'이라 기록해놓고 거기서 입력 받는 것과 동일하다고 생각하면 된다.
int x;
ss >> x;
그래서 마치 파일에서 숫자를 읽어내는 것처럼 std::istringstream을 통해서 123을 읽어낼 수 있다.
std::istringstream을 활용하면 atoi와 같은 함수를 사용할 필요 없이 간편하게 문자열에서 숫자로 변환하는 함수를 아래와 같이 만들 수 있다.
#include <iostream>
#include <sstream>
#include <string>
double to_number(std::string s) {
std::istringstream ss(s);
double x;
ss >> x;
return x;
}
int main() {
std::cout << "1 + 2 = " << to_number("1") + to_number("2") << std::endl;
return 0;
}
더보기
1 + 2 = 3
이번에는 거꾸로 데이터를 출력할 수 있는 std::ostringstream이 있다. 위와 비슷한 방법으로 이번에는 거꾸로 숫자에서 문자열로 바꾸는 함수를 아래와 같이 제작할 수 있다.
#include <iostream>
#include <sstream>
#include <string>
std::string to_str(int x) {
std::ostringstream ss;
ss << x;
return ss.str();
}
int main() {
std::cout << "1 + 2 = " << to_str(1 + 2) << std::endl;
return 0;
}
더보기
1 + 2 = 3
아래와 같이 int 변수 x의 값을 문자열 스트림에 출력하였다. 이 과정에서 자동으로 숫자에서 문자열로의 변환이 있을 것이다.
std::ostringstream ss;
ss << x;
이제 str함수로 현재 문자열 스트림에 쓰여 있는 값을 불러오기만 하면 끝난다.
return ss.str();
728x90
'Development > C & C++' 카테고리의 다른 글
[c++] 템플릿(template) (0) | 2021.01.04 |
---|---|
[c++] class 상속(private, protected, public) (0) | 2021.01.03 |
[c++] std::ofstream 연산자 오버로딩 (0) | 2021.01.03 |
[c++] 파일에 쓰기 (0) | 2021.01.03 |
[c++] 파일 전체 읽기 (0) | 2021.01.03 |
Comments