CPP 문자열 (스트림 클래스)

Copyright (c) 2016-, All Rights Reserved by Kwanghoon Choi
(아래 CPP 프로그래밍 강의 교재의 내용을 자유롭게 이용하되 다른 웹 사이트 등을 통한 배포를 금합니다.)

목차

2. 문자열 스트림 클래스
마치 키보드를 통해 입력한 것처럼 문자열로부터 입력받는 방법과 또한 마치 화면에 출력하는 것처럼 문자열에 출력하는 방법을 제공하는 문자열 스트림 클래스 istringstream, ostringstream에 대해 설명한다. 이 클래스를 사용하려면 #include <sstream>을 선언한다.

  • 참고: istream vs. istringstream
  • 참고: ostream vs. ostringstream

문자열 스트림 클래스를 사용해서 숫자를 문자열로 또는 그 반대로 변환하기 쉽다.

ostringstream ost;
ost << 123; // 숫자 123을 문자열 스트림 클래스에 출력하여 문자열로 변환
string s = ost.str();   // ost.str()의 결과는 문자열 "123"  (숫자 123이 아닌)

istringstream ist(s);  // 입력 내용으로 문자열 s를 지정
int x;
ist >> x;   // x에 123을 입력 받음

C프로그램에서 이와 유사한 프로그램을 작성할 수 있었다.

char buf[MAX_LEN];
sprintf( buf, "%d", 123 ); // buf에 "123"을 저장

int x;
sscanf( buf, "%d", &x ); // x에 123을 입력 받음

istringstream과 ostringstream 클래스는 입출력 클래스와 유사한 기능을 제공한다.

string concat(const string& s1, const string& s2) {
   ostringstream ost;
   ost << cs1 << cs2;
   return ost.str();
}


void wordPerLine(const string& s) {
   istringstream ist(s);
   string w;
   while  ( ist >> w ) 
     cout << w << endl;

Q7. 위의 concat 함수와 wordPerLine 함수의 동작을 각각 예를 들어 설명하시오.

(힌트: wordPerLine의 ist >> w의 코드는 cin >> w와 유사한 방식으로 동작한다. while ( cin >> w ) cout << w << endl;은 입력의 끝에 도달할 때까지 반복해서 단어를 입력받아 출력하고 줄 바꿈을 출력한다.)

Leave a Reply

Your email address will not be published. Required fields are marked *