C++에서 istringstream, ostringstream, stringstream은 문자열을 읽고 쓰기 위한 스트림 클래스입니다.
- istringstream: 입력 문자열을 읽기 위한 스트림 클래스입니다.
- ostringstream: 출력 문자열을 쓰기 위한 스트림 클래스입니다.
- stringstream: 입력 및 출력 문자열을 읽고 쓰기 위한 스트림 클래스입니다.
istringstream
예를 들어, istringstream 클래스는 문자열에서 데이터를 읽어들일 때 사용할 수 있습니다.
문자열을 istringstream 객체에 넣고, 해당 객체를 이용하여 값을 추출하면 됩니다.
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
string str = "123 456";
istringstream iss(str);
int num1, num2;
iss >> num1 >> num2;
cout << num1 << " " << num2 << endl;
return 0;
}
위 코드는 문자열 "123 456"을 istringstream 객체에 넣고, >> 연산자를 이용하여 정수형 변수 num1과 num2에 값을 추출한 후, 이를 출력하는 예시입니다. 결과는 다음과 같습니다.
123 456
ostringstream
ostringstream 클래스는 출력 문자열을 쓰기 위한 스트림 클래스로, 다음과 같이 사용할 수 있습니다.
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
ostringstream oss;
int num1 = 123, num2 = 456;
oss << num1 << " " << num2;
string str = oss.str();
cout << str << endl;
return 0;
}
위 코드는 ostringstream 객체 oss를 만들고, << 연산자를 이용하여 num1과 num2의 값을 oss에 쓰고, 이를 문자열로 변환하여 출력하는 예시입니다. 결과는 다음과 같습니다.
123 456
stringstream
stringstream 클래스는 입력 및 출력 문자열을 읽고 쓰기 위한 스트림 클래스로, istringstream과 ostringstream의 기능을 모두 포함합니다. 이를 사용하는 방법은 다음과 같습니다.
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
string str = "123 456";
stringstream ss(str);
int num1, num2;
ss >> num1 >> num2;
cout << num1 << " " << num2 << endl;
ss.str("");
ss << "789";
string new_str = ss.str();
cout << new_str << endl;
return 0;
}
위 코드는 stringstream 객체 ss를 만들고, istringstream의 예시와 같이 str을 이용하여 num1과 num2의 값을 읽은 후 출력합니다. 그 다음에는 ss.str("")을 이용하여 ss의 값을 초기화하고, ss << "789"를 이용하여 "789"라는 문자열을 ss에 쓰고, 이를 문자열로 변환하여 출력합니다. 결과는 다음과 같습니다.
123 456
789
'C, C++' 카테고리의 다른 글
[C#] delegate (대리자) (0) | 2022.10.11 |
---|---|
[C#] ThreadPool 클래스 (0) | 2022.07.04 |
[C/C++]explicit (0) | 2021.12.01 |
[C/C++]스마트 포인터(smart pointer) (0) | 2021.11.22 |
[C/C++] accumulate 사용법과 주의사항 (0) | 2021.07.09 |