원본 : http://www.debuglab.com/knowledge/stringstream.html
1.요약
문자열을 스트림처럼 다룰 수 있습니다.
sprintf/wsprintf의 대용으로 사용할 수도 있고, 문자열에서 토큰을 꺼내오는 데도 사용할 수 있습니다.
2.본문
C++에서 표준 입출력을 나타내는 cin/cout을 사용해 보신 적이 있으실 겁니다. stringstream도 같은 인터페이스를 가지고 있습니다.
대신에 문자열을 상대로 입출력을 한다고 생각하시면 되죠.
예제를 우선 보시겠습니다.
----- stringstream을 사용한 예제 --------------------------
Sentence---------------------
My favorite color is blue
and my favorite number is 357
Token------------------------
My
favorite
color
is
blue
and
my
favorite
number
is
3571
-- 예제 분석 -----------------------------------------------
( 참고로 이번 예제에서는 using namespace std;를 사용하지 않았기 때문에 필요할 때마다 std::를 붙여주어야 합니다. 계속 보시죠)
----------------------------------------------------------
n, p는 나중에 문자열에 집어넣으려고 만든 겁니다.
중요한 stringstream s를 선언하고 있습니다.
----------------------------------------------------------
----------------------------------------------------------
stringstream::str() 은 string 을 반환합니다.
string은 C++ Standard Library에서 문자열을 다루기 위해 추가된 템플릿 클래스 입니다. string 객체에서 c-style의 문자열을 얻고자 하신다면.
----------------------------------------------------------
이번 Tip의 두 번째 하이라이트인 23 라인에서는
나머지 코드는 실패여부를 확인하고 화면에 찍어주는 역할을 하므로 설명은 생략하겠습니다.
3.예제
4.참고
The C++ Standard Library from scratch
- 2001.08.13 Smile Seo -
1.요약
문자열을 스트림처럼 다룰 수 있습니다.
sprintf/wsprintf의 대용으로 사용할 수도 있고, 문자열에서 토큰을 꺼내오는 데도 사용할 수 있습니다.
2.본문
C++에서 표준 입출력을 나타내는 cin/cout을 사용해 보신 적이 있으실 겁니다. stringstream도 같은 인터페이스를 가지고 있습니다.
대신에 문자열을 상대로 입출력을 한다고 생각하시면 되죠.
예제를 우선 보시겠습니다.
----- stringstream을 사용한 예제 --------------------------
1
2
3 #include <sstream>
4 #include <iostream>
5
6 int main(int argc, char* argv[])
7 {
8 int n = 3571;
9 char* p = "blue";
10
11 std::stringstream s;
12 s << " My favorite color is " << p << "\nand my favorite number is " << n;
13
14 std::cout << "Sentence----------------------\n";
15 std::cout << s.str() << std::endl;
16
17 std::cout << "\nToken-------------------------\n";
18
19 while(1)
20 {
21 char c[100];
22
23 s >> c;
24 if( s.fail() )
25 break;
26
27 std::cout << c << "\n";
28 }
29
30 std::cout.flush();
31
32 return 0;
33 }
---- 실행 결과 ------------------------------------------------- Sentence---------------------
My favorite color is blue
and my favorite number is 357
Token------------------------
My
favorite
color
is
blue
and
my
favorite
number
is
3571
-- 예제 분석 -----------------------------------------------
3 #include <sstream>stringstream 은 sstream 헤더 파일에 정의되어 있습니다.
( 참고로 이번 예제에서는 using namespace std;를 사용하지 않았기 때문에 필요할 때마다 std::를 붙여주어야 합니다. 계속 보시죠)
----------------------------------------------------------
8 int n = 3571; 9 char* p = "blue"; 10지역 변수를 선언하고 있습니다.
n, p는 나중에 문자열에 집어넣으려고 만든 겁니다.
중요한 stringstream s를 선언하고 있습니다.
----------------------------------------------------------
12 s << " My favorite color is " << p << "\nand my favorite number is " << n;이번 Tip에서의 첫번째 하이라이트 입니다. MFC의 CArchive를 쓰듯이 s에 문자열 및 숫자를 차곡차곡 넣고 있습니다.
----------------------------------------------------------
15 std::cout << s.str() << std::endl;넣었으면 전체 문자열을 얻을 수도 있어야 겠지요.
stringstream::str() 은 string 을 반환합니다.
string은 C++ Standard Library에서 문자열을 다루기 위해 추가된 템플릿 클래스 입니다. string 객체에서 c-style의 문자열을 얻고자 하신다면.
str.c_str();처럼 하시면 됩니다. 필요하실 때 쓰세요.
----------------------------------------------------------
19 while(1)
20 {
21 char c[100];
22
23 s >> c;
24 if( s.fail() )
25 break;
26
27 std::cout << c << "\n";
28 }
문자열의 마지막까지 토큰을 뽑아내려고 while 문으로 루프를 돌리고 있습니다. 이번 Tip의 두 번째 하이라이트인 23 라인에서는
s >> c;처럼 토큰을 뽑아내고 있습니다.
나머지 코드는 실패여부를 확인하고 화면에 찍어주는 역할을 하므로 설명은 생략하겠습니다.
3.예제
4.참고
The C++ Standard Library from scratch
- 2001.08.13 Smile Seo -
"C++" 카테고리의 다른 글
- malloc과 free 보다는 new와 delete를 사용한다. (0)2007/03/19
- based addressing (0)2007/03/17
- stringstream (0)2007/03/08
- upper_bound/lower_bound (0)2007/03/08
- auto_ptr (0)2007/03/05
Tags stringstream

수안이의 컴퓨터 연구실



Leave your greetings.