C++ 41

[C++] <sstream>헤더파일

순서sstream이란 무엇인가?sstream이 제공하는 주요 클래스sstream이란 무엇인가?C++ 표준 라이브러리의 헤더파일이다.string 기반 stream class들을 제공하여 문자열(string)을 입력/출력 stream처럼 처리할 수 있도록 도와줌sstream이 제공하는 주요 클래스istringstream문자열로부터 입력 스트림을 생성함. istringstream ex)#include #include #include using namespace std;int main() { string data = "123 456 789"; istringstream iss(data); int a, b, c; iss >> a >> b >> c; cout ostringstream출력 ..

C++ 2025.07.04

[C++] toupper, tolower

순서헤더toupper 함수tolower 함수toupper, tolower함수 공통 설명헤더c++에서 헤더를 include 하여 toupper과 tolower을 사용할 수 있음toupper 함수toupper: 입력된 소문자를 대응하는 대문자로 변환해주는 역할시그니처는 int toupper(int c) 형태이다.반환값반환값은 int형으로 반환됨. 만약 인자가 소문자면 대문자로 바꾼 값의 int, 그 외는 그대로 반환됨.tolower 함수tolower: 입력된 대문자를 대응하는 소문자로 변환해주는 역할시그니처는 int tolower(int c)형태이다.반환값반환값은 int형으로 반환됨. 만약 인자가 대문자면 소문자로 바꾼 값의 int, 그 외는 그대로 반환됨.toupper, tolower 함수 공통 설명인자인..

C++ 2025.07.02

[C++] 생성 패턴/싱글톤 패턴

순서싱글톤패턴이란?싱글톤패턴의 사용예싱글톤패턴의 장점과 단점싱글톤패턴 사용시 고려사항간단한 싱글톤패턴작성싱글톤패턴이란?Singleton패턴은 class의 instance가 단 하나만 존재하도록 보장하고, 전역적으로 접근할 수 있는 지점을 제공하는 디자인 패턴임.싱글톤패턴의 사용예DB게임내부의 ManagerPlayer(싱글 게임이라면)싱글톤패턴의 장점과 단점장점전역 접근: 어디서든 같은 인스턴스에 접근 가능메모리 절약: 하나의 인스턴스만 생성되므로 메모리 관리에 효율적데이터 일관성: 전역 상태를 하나의 객체로 관리단점테스트 어려움: 전역상태로 인해 단위 테스트가 복잡함결합도 증가: 여러 클래스가 Singleton에 의존하게됨멀티스레딩 문제: 스레드 안정성을 고려해야함확장성 문제: 나중에 여러 인스턴스가 필..

C++/디자인패턴 2025.06.20

[C++] TRPG(TextRPG) Character제작

순서Character class 생성기능 분류변수와 함수 선언Character class 생성Character.h파일 작성#pragma once#include #include class Item;class Character {private: static Character* charInstance; std::string name; //플레이어 이름 int level = 1; //레벨 int maxLevel = 10; int health = 0; //현재 체력 int maxHealth = 0; //최대 체력 int attack = 0; //공격력 int experience = 0; //경험치 int needExperience = 100; int gold = 0; //소지 골드 Item* equipWeapon..

C++ 2025.06.19

[C++]FMath

순서FMath란?FMath의 함수FMath란?언리얼 엔진에서 수학 연산을 위한 정적 함수들을 모아둔 유틸리티 클래스C++의 와 같은 역할을 하며, 벡터 연산, 난수 등을 다룰 때 자주 사용함FMath는 인스턴스를 만들 필요 없는 static 클래스이다.FMath의 함수를 사용할 때는 FMath::함수이름()의 형태로 사용함정수, 실수, 벡터 관련 연산 대부분을 포함하고 있음왜 를 두고 FMath를 사용할까?C++의 보다 게임 최적화와 관련된 고성능 수학 연산용으로 설계되었기 때문FMath의 함수Abs() - 절댓값Clamp() - 값의 범위 제한Lerp() - 선형 보간Rand() - 0 ~ Rand_Max 정수 난수FRand() - 0 ~ 1 사이 float 난수 RandRange(a, b) - a ~..

C++ 2025.06.18

[C++]STL(Standard Template Library)

순서STL이란?컨테이너벡터맵알고리즘반복자STL이란?C++ 표준 라이브러리의 핵심 구성 요소 중 하나로 자료구조, 알고리즘, 반복자를 제네릭하게 제공하는 라이브러리임.제네릭 프로그래밍 철학을 기반으로 설계하여 템플릿을 사용해서 자료형에 상관없이 동작함최적화된 자료구조와 알고리즘을 제공하며, 코드 재사용성, 안정성, 성능을 확보함컨테이너데이터를 담는 자료구조를 뜻함. (데이터를 담는 방식이나 제공하는 메서드에 따라 여러 가지 컨테이너를 제공함)모든 컨테이너는 템플릿으로 구현되어 있으며, 다양한 타입의 데이터를 저장할 수 있음모든 컨테이너는 메모리 관리를 내부적으로 하기 때문에 사용시 메모리 해제를 직접 고려하지 않아도 됨.대부분의 컨테이너는 반복자를 제공하기 때문에 내부 구현을 몰라도 동일한 방식으로 컨테이..

C++ 2025.06.11

[C++]템플릿

순서함수 오버로딩템플릿함수 오버로딩함수 오버로딩: 컴파일러가 매개변수의 타입과 개수를 기준으로 같은 이름의 함수들을 구분할 수 있도록, 네임 맹글링하여 여러 개 정의할 수 있게 하는 것.네임 맹글링(Name Mangling): 함수 이름 구분을 위해 내부적으로 고유한 이름을 부여하는 것 (단, 함수의 반환형만으로는 오버로딩이 성립하지 않음)C언어와 다르게 C++에서는 오버로딩을 통해 동일한 이름의 함수를 여러 개 정의할 수 있음. => C는 함수 이름으로만 함수를 구분하지만, C++은 함수 이름과 매개변수 타입 정보를 함께 사용해 구분하기 때문함수 오버로딩이 유효해지는 조건매개변수 타입이 다른 경우매개변수의 개수가 다른 경우함수 오버로딩 호출함수 오버로딩이 되려면, 호출되는 함수가 분명해야함. 호출 시점..

C++ 2025.06.09

[C++] 자원 관리하기

순서스택 메모리힙(동적) 메모리Dangling PointerMemory Leak스마트 포인터얕은 복사와 깊은 복사언리얼 엔진의 메모리 관리스택 메모리함수 내에서 선언된 지역 변수와 매개변수는 별도로 동적 할당하지 않는 한, 기본적으로 스택 메모리에 저장되며, 함수가 끝나면 자동으로 해제됨.예외적인 상황으로 함수 내의 제어구조, 블록, 스코프 등에서 선언된 변수는 해당 지역이 끝날 때 마다 소멸됨.일반적으로 할당 가능한 스택 메모리의 크기가 제한적임변수의 스코프(생존 영역)을 벗어나면 자동으로 해제되므로, 메모리를 더 길거나 유연하게 관리하기 어려움 => 해당 문제를 해결하기 위해 힙(동적)메모리를 사용할 수 있음힙 메모리동적 할당 시 new 연산자를 사용하고, 해제 시 delete 연산자를 사용함스택과 ..

C++ 2025.06.09

[C++]프로그래밍 기초3

반복작업을 줄여주는 함수함수를 사용하면 생기는 장점가독성 및 재사용성 향상함수란?프로그래밍을 하다 보면 반복적으로 사용되는 코드나 논리적으로 하나로 묶이는 코드가 있다. 해당 코드를 이름을 붙여 정의하고 가져다 쓰는 방식으로 구현하면 코드가 깔끔해지고 재사용성이 높아진다. 해당 방식으로 작업을 정의하고 이름을 붙이는 문법을 함수라고 한다.#include using namespace std;// 두 정수를 더하는 함수 (반환 있음)int add(int a, int b) { return a + b; // 결과 반환}// 메시지를 출력하는 함수 (반환 없음)void printMessage() { cout 코드블럭 설명int add(int a, int b)로 선언된 함수는 int형태로 반환하는 반환값..

C++ 2025.06.02