728x90
반응형
C++에서 문자열을 공백과 \n 을 기준으로 int형 string형 float형 등 다양하게 자를 수 있도록 하는 stringstream이 존재한다.
이것을 어떻게 쓰는지 알아보도록 하자. stringstream을 설명하기 전에 stream은 무엇인지 알아보도록 하겠다.
스트림(stream)
C++ 프로그램은 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(stream)을 통해 다룬다.
스트림(stream)이란 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름을 의미한다.
즉, 스트림은 운영체제가 입력과 출력을 다루기 위해 가상으로 만들어 준 것으로 중간 역할을 한다.
버퍼(buffer)
스트림은 내부에 버퍼(buffer)라는 임시 메모리 공간을 가진다.
버퍼를 이용하면 프로그램의 입출력을 효율적으로 처리할 수 있다.
버퍼의 장점
1. 문자를 하나씩 전달하는 것이 아닌 묶어서 한 번에 전달하므로, 전송 시간이 적게 걸려 성능이 향상된다.
2. 사용자가 문자를 잘못 입력했을 경우 수정을 할 수가 있다.
버퍼의 단점
1. 빠르게 반응해야하는 프로그램을 수행할 때에는 키보드에서 프로그램으로 바로 전달되어야 한다.
참고 링크
https://tcpschool.com/cpp/cpp_io_streamBuffer
반응형
stringstream 이란?
문자열에서 동작하는 스트림 클래스이다.(즉 외부에서 입력과 출력으로 받는 것이 아니라 string type을 받아 동작한다.)
문자열에서 내가 원하는 자료형의 데이터를 추출할 때 사용한다.
#include<sstream>을 선언하고 사용해야한다.
String에서 Int형 뽑아내는 예시
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
int num;
string str = "123 456\n789 012";
stringstream stream;
stream.str(str);//초기화 ->stream에 str을 대입.
while(stream >> num)
{ //뽑아내고자 하는 int형 값을 출력한다. (num이 int형이기 때문에) 공백이나 \n이 나올때 까지 읽어드린 후 출력
cout << num << endl;
}
}
//출력 //123 //456 //789 //12
String에서 공백을 기준으로 string 뽑아내는 예시
#include <string>
#include <sstream>
#include <iostream>
using namespace std;
int main()
{
string s;
string str = "hello world!\nhell world";
stringstream stream(str);//초기화 ->stream에 str을 대입.
while(stream >> s)
{ //뽑아내고자 하는 string type을 출력한다.(s가 string type이기 때문에) 공백이나 \n이 나올때 까지 읽어드린 후 출력
cout<<s<<endl;
}
}
//출력 : //hello //world! //hell //world
728x90
반응형
'Algorithm' 카테고리의 다른 글
[C++] string::to_string 사용하기(feat. int, double, float -> stirng 변환) (0) | 2022.01.02 |
---|---|
[C++] string 자르는 2가지 방법(feat. istringstream 이용하기, substr 이용하기) (0) | 2021.12.31 |
[알고리즘] C++ string::find() 사용법 (0) | 2021.12.30 |
[Algorithm] 백준 2096 내려가기 문제풀이(Feat. 메모리초과, 메모리 계산법) (0) | 2021.11.12 |
[Algorithm] 백준 16282 - Black Chain 풀이 (feat. pow 문제점) (0) | 2021.09.30 |