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를 사용하면 사본은 단 하나만 존재하게 된다.
'게임공부' 카테고리의 다른 글
[C++][TCP/IP] 간단한 서버 - 클라이언트 예제 만들어보기 (13) | 2024.10.03 |
---|