수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1620500
  • Today | 362
  • Yesterday | 670

1 Articles, Search for 'stringstream'

  1. 2007/03/08 stringstream
Programming/C++2007/03/08 09:56

stringstream

원본 : http://www.debuglab.com/knowledge/stringstream.html

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
2007/03/08 09:56 2007/03/08 09:56
Posted by webdizen
Tags stringstream
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2683

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1  Next»

RSS HanRSS
Blog Image
webdizen
이 곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (2998)
Webdizen (134)
Life (6)
Diary (16)
Blog (9)
IDEA (1)
Travel (10)
Book (14)
Photo (7)
Movie (7)
Music (13)
Leisure Sports (10)
Funny (5)
Hardware (119)
Software (120)
Windows (5)
Unix & Linux (119)
Installation (4)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (805)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (3)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (3)
Network (66)
Web (78)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • Function Pointer
  • 유레일
  • Visual Studio 2005
  • US
  • Calendar
  • SOA
  • 김연아
  • RegOpenKey
  • 부자
  • PNG
  • 강원대학교 사범대학 부설고등학교
  • VSS
  • 윈져 프리미엄
  • 썬라이즈 페파민트
  • Data Types
  • 강대라이크
  • DOCTYPE
  • dnpq dortpffjfpdlxj
  • 인덱싱 기법
  • Density

Recent Articles

  • ASCII Code의 CRLF 제거 방법.
  • Hadoop 에서 c++ API 이용시....
  • Ubuntu Linux에서 Hadoop 구....
  • 내 심장을 한껏 뛰게한 "국가....
  • 스타 스키마 데이터베이스 설....

Recent Comments

  • ■ 온라인카지노 ▶ http://L....
    asdf 10:36
  • 그리고 혹시 해외여행자보험....
    kim 11/05
  • ★★실제 바다게임장과 똑같....
    asdf 11/04
  • sbsyama.co.to← 짱5000만당....
    asdf 11/04
  • ♡KicaZ??o(???) 바카라사....
    fdsf3fass 11/03

Recent Trackbacks

  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 02/11
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007
  • 마방진을 구하는 프로그램.
    Oranzie's BLOG 3 2007

Archive

  • 2009/09 (3)
  • 2009/08 (1)
  • 2009/03 (1)
  • 2009/02 (9)
  • 2009/01 (13)

Calendar

«   2009/11   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.