[C++ 언어-막코딩] 16장 stringstream 문자열 처리
[C++ 언어-막코딩] 16장 stringstream 문자열 처리
- 다운 사이트 : https://sourceforge.net/projects/orwelldevcpp/
- 웹컴파일러 : https://www.tutorialspoint.com/compile_c_online.php
오늘은 문자열 처리를 쉽게 하는 방법을 알아도록 하겠습니다. c언어에서는 문자열 처리를 할 때 근 문장 안에 각각의 문자열들을 쪼개기 위해서는 각 문자열의 첫글자의 위치값을 계산하여 각각의 문자열을 쪼개게 됩니다. 쪼갠 후에도 처리해야 할 코딩이 많아지는데 stringstream 클래스를 이용하면 쉽게 문자열을 쪼개어 관리 할 수 있습니다.
그럼 어떻게 하는지 알아 볼까요.
1. stringstream 클래스
stringstream 객체명;
stringstream 객체명(문자열);
이렇게 선언 할 수 있습니다.
- 객체명(인자) => string 문자열
- stringstream(string &s)
인자는 string 문자열 입니다.
예)
string str="aaa bbb ccc"
stringstream sstr(str);
이렇게 선언하면 sstr객체 안에는 "aaa bbb ccc"가 저장 되어 있게 됩니다.
호출 할때는 다음과 같이 호출 됩니다.
string str_buf;
sstr>>str_buf; //"aaa"
sstr>>str_buf; //"bbb"
sstr>>str_buf; //"bbb"
이렇게 매번 '>>'기호로 str_buf 공간에 한개씩 문자열을 추출하여 저장하게 됩니다.
저장은 반대로 하면 됩니다.
sstr<<"aaa"<<' '<<"bbb";
이렇게 '<<'저장하게 되는데 각각의 문자열 사이에 공백(' ')문자를 넣어서 구분해야 합니다.
stringstream 객체변수에 저장과 출력은 위에서 하는 방식으로 간단히 할 수 있는데 실제 코딩을 통해 결과를 확인을 해봐야겠지요.
2. 코딩
[전체소스]
#include <iostream>
#include <string.h>
#include <sstream>
using namespace std;
int main(int argc, char** argv) {
string str="aaa bbb ccc";
string str_buf;
stringstream sstr1(str);
sstr1>>str_buf;
cout<<str_buf<<endl;
sstr1>>str_buf;
cout<<str_buf<<endl;
sstr1>>str_buf;
cout<<str_buf<<endl;
int a,b;
stringstream sstr2;
sstr2<<100<<' '<<200<<endl;
sstr2>>a>>b;
cout<<a<<' '<<b<<endl;
return 0;
}
마무리
C언어 때를 생각하면 복잡한 코딩이 사라져 진짜 간단해 졌습니다.
[C언어] CSV 데이터 파일을 strtok()함수로 처리
위 예제에서 문자열 쪼개는 코딩을 보면 답답 할꺼에요. C++ 에서는 이리 간단하게 stringstream 클래스를 이요하면 쉽게 처리되는데 말이죠.
암튼 문자열 처리 할 때 할용하면 유용합니다.
Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 600K SP virus707 account.
Thank you