분류 전체보기
데이터베이스 구현
아이디어 csv 문서를 파싱해 https://jartlife.tistory.com/53 csv 문서 파싱 csv 파일 csv(comma-separated values) 파일은 쉼표로 구분되는 문자열을 나열한 파일 형식이다. 엑셀과 메모장에서 csv파일을 쉽게 보고 편집할 수 있다. 데이터베이스를 csv 파일로 구축하면 각 필드를 jartlife.tistory.com stringstream 으로부터 https://jartlife.tistory.com/55 std::stringstream 을 통해 문자열을 값으로 문자열을 값으로 int, double, long 같은 primitive 자료형은 헤더만 추가하면 얼마든지 std::stoi, std::stod, std::stol 과 같은 함수를 통해 문자열을 실제..
std::iostream 으로 std::tuple 입출력하기
istream& operator>>, ostream& operator> 연산자를 오버로딩하지 않았으므로 std::istream 으로 std::tuple 을 입력받을 수는 없다. 같은 논리로 std::ostream 에 std::tuple 을 출력할 수도 없다. 따라서 std::istream 과 std::tuple 을 받는 operator>> 를 사용자가 오버로딩하면 충분히 std::istream 으로 std::tuple 을 입력받을 수 있고, std::ostream 과 std::tuple 을 받는 operator get( tup ); ss >> get( tup ); ss >> get( tup ); ss >> get( tup ); cout
std::stringstream 을 통해 문자열을 값으로
문자열을 값으로 int, double, long 같은 primitive 자료형은 헤더만 추가하면 얼마든지 std::stoi, std::stod, std::stol 과 같은 함수를 통해 문자열을 실제 값으로 변환할 수 있다. 그러나 각각의 함수 이름을 외워야 하는 것은 물론, 사용자 정의 클래스로 변환해주는 함수는 존재하지 않는다는 단점이 있다. stringstream std::stringstream 을 입력하면 문자열을 입출력 스트림처럼 다룰 수 있다. ( 입출력 스트림은 std::cin 과 std:: cout 으로 대표된다. ) 스트림에 출력된 내용은 스트림 내부에 문자열로 변환되어 저장되고 스트림에서 입력받을 때에는 문자열을 꺼내와 입력받을 객체의 타입에 맞게 변환한다. std::iostream 을 ..
코드 리팩토링
들여쓰기, 간격 한 줄짜리 if문과 for문에도 중괄호 들여쓰기를 적용한다. 괄호 내부에 공백을 삽입한다. 함수의 매개변수 목록, 함수 호출 시 인자 목록 내부에 공백을 삽입한다. 조건문의 조건식에 공백을 삽입한다. 괄호로 묶인 식의 내부에 공백을 삽입한다. 대괄호 내부에 공백을 삽입한다. 이항 연산자의 앞뒤에 공백을 삽입한다. 람다의 대괄호 내부에 공백을 삽입한다. 키워드 추가 // keyword.h #ifndef _keyword #define _keyword #define PURE // 대입 연산을 하지 않으며, 결과값이 외부 상태와 무관한 순수 함수 #define NOASSIGNMENT // 대입 연산을 하지 않는 함수 #define HELPER // 사용자 코드에서의 직접 호출되지 않고 다른 클래..
csv 문서 파싱
csv 파일 csv(comma-separated values) 파일은 쉼표로 구분되는 문자열을 나열한 파일 형식이다. 엑셀과 메모장에서 csv파일을 쉽게 보고 편집할 수 있다. 데이터베이스를 csv 파일로 구축하면 각 필드를 쉼표로 구분하여 튜플들을 저장할 수 있다. 작성 규칙 각 필드는 띄어쓰기 없이 , 로 구분한다. 각 튜플은 개행문자 \n, \r 로 구분한다. 문자열 필드일 경우 " " 로 감싼다. 문자열 내에서 " 를 사용할 때에는 "" 와 같이 두 번씩 쓴다. 문자열 내에서의 ,(쉼표), \n, \r 는 구분자가 아닌 문자열 내의 문자로 취급한다. 집합 필드일 경우 { } 로 감싸고, , 대신 공백(띄어쓰기, 탭, 개행문자)으로 구분한다. 예시 "월요일","화요일","수요일","목요일" 200,..
게임 프레임 관리
게임의 동작 게임은 일정 시간 간격마다 사용자 입력을 처리하고 객체들을 업데이트한 뒤 객체들을 렌더링한다. 따라서 게임에서 타이머의 역할은 매우 중요하다. 게임의 거의 모든 기반이 타이머를 통해 돌아간다. 초당 프레임 수(FPS) 프레임은 이미지이다. 서로 다른 이미지들을 연속해서 보여주는 것을 애니메이션이라 한다. 애니메이션에 쓰이는 이미지 한 장 한 장을 프레임이라 부른다. 플레이어는 애니메이션을 보고 움직임을 인지할 수 있다. 인간이 감각적으로 '생생한 움직임'을 느끼기 위해선 프레임 전환 속도가 빨라야 한다. 따라서 1초 동안 처리되는 프레임 수 FPS는 적절히 높아야 한다. "적절히 높아야" 한다는 게 포인트다. 게임은 이와 같은 방법으로 프레임을 처리한다. 프레임을 교체( 업데이트 ) 후 출력..