1. istringstream (입력 스트림, string → cin처럼 사용)

문자열을 입력 스트림으로 변환하여 cin처럼 사용할 수 있음.
✔ 공백을 기준으로 문자열을 분리하여 읽을 때 유용함.

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main() {
    string input = "123 456 789";
    istringstream iss(input);  // 문자열을 입력 스트림으로 변환

    int num;
    while (iss >> num) {  // 공백 기준으로 숫자 추출
        cout << num << endl;
    }

    return 0;
}

2. ostringstream (출력 스트림, cout처럼 string에 출력)

문자열을 생성 및 조합할 때 사용.
✔ cout처럼 데이터를 추가할 수 있음.
✔ += 연산자보다 빠르게 문자열을 결합하는 방법 중 하나.

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main() {
    ostringstream oss;  // 출력 스트림 생성

    oss << "Hello, " << "World! " << 2024;  // 여러 개의 데이터를 추가

    string result = oss.str();  // 최종 문자열 변환
    cout << result << endl;  // 출력

    return 0;
}

 

3. stringstream (입출력 스트림, istringstream + ostringstream)

istringstream과 ostringstream을 동시에 사용할 수 있음.
✔ 문자열을 읽고(>>) 쓰기(<<) 모두 가능.
한 번에 문자열을 처리할 때 유용.

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main() {
    stringstream ss;  // 문자열 스트림 생성

    ss << "100 200 300";  // 문자열 입력

    int num;
    while (ss >> num) {  // 문자열에서 숫자 추출
        cout << "읽은 숫자: " << num << endl;
    }

    ss.clear();  // 스트림 상태 초기화
    ss << "새로운 데이터 추가";  // 새로운 문자열 입력

    cout << "최종 문자열: " << ss.str() << endl;  // 전체 문자열 출력

    return 0;
}

 

📌 istringstream vs ostringstream vs stringstream 차이점

스트림 종류설명주요 기능

istringstream 문자열 → 입력 스트림(cin처럼 사용) >> 연산자로 값 추출
ostringstream 출력 스트림 → 문자열(cout처럼 사용) << 연산자로 문자열 결합
stringstream 입출력 모두 가능 (istringstream + ostringstream) >>와 << 모두 사용 가능

 

 

 

3.map / unordered_map 초기화 방식

,를 사용하여 초기화 가능

map보다는 unordered_map을 사용하는게 조회가 빠르다.

unordered_map<string, double> grade_map = {
   {"A+", 4.5}, {"A0", 4.0}, {"B+", 3.5}, {"B0", 3.0},
   {"C+", 2.5}, {"C0", 2.0}, {"D+", 1.5}, {"D0", 1.0}, {"F", 0.0}
};

 

 

4.#define보다는 const 

#define으로 상수를 정의하면 컴파일에서는 이 값을 상수로 만들어서 실행시키기 떄문에 오류가 발생했을 떄 디버깅에서 오류를 찾기 어려울 수도 있기 때문에 상수값을 정의할 때는 #define 보다는 const를 사용하는 것이 좋다.

또한 매크로를 사용하여 정의하게 되면 이 상수값이 등장하는 만큼 이 사본이 등장하게 되지만 const를 사용하면 사본은 단 하나만 존재하게 된다.

+ Recent posts