컴공생의 다이어리

[c++] 문자열 스트림 (std::stringstream) 본문

Development/C & C++

[c++] 문자열 스트림 (std::stringstream)

컴공 K 2021. 1. 3. 20:53
#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();

 

 

 

modoocode.com/312

 

씹어먹는 C++ 강좌 - PDF 파일

 

modoocode.com

 

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