본문 바로가기

C,C++

스마트 포인터(C++) http://tcpschool.com/cpp/cpp_template_smartPointer 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.com class AAA { public: string m_str; public: AAA() { printf("생성자 호출\n"); } AAA(const string str) { m_str = str; cout
visual studio 2017 SFML 적용하기 https://www.youtube.com/watch?v=axIgxBQVBg0 SFML을 적용하는데 생각보다 시간이 걸렸는데 위의 유투브 영상을 보고 따라했더니 제대로 동작했다. 1. SFML 다운받기 https://www.sfml-dev.org/download/sfml/2.5.1/ 여러 글들을 찾아보니 이유는 모르겠으나 2017버전은 C++ 14 (2015) 32bit 를 받아야 호환이 된다는 글이 많아서 2015를 받았다. 2. 프로젝트 폴더에 SFML 폴더들 옮기기 SFML 폴더에서 우리가 사용할 폴더는 bin, lib, include 이다. 생성한 프로젝트의 폴더에 SFML 폴더를 새로 만들어주고 다운 받은 bin, lib, include를 복사해서 넣어준다. 3. 프로젝트 속성 창에서 구성을 모..
C++ :: 콘솔 글자 및 배경색 변경하기 #include #include using namespace std; enum Color { BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, DARKGRAY, LIGHTBLUE, LIGHTGREEN, LIGHTCYAN, LIGHTRED, LIGHTMAGENTA, YELLOW, WHITE }; void textcolor(int foreground, int background) { int color = foreground + background * 16; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color); } int main() { textcolor(LIGHTBLUE, BLACK); cout
fseek과 ftell로 파일의 크기 알아보기 fseek 함수는 파일 커서의 위치를 원하는 곳으로 이동시켜주는 함수이다. fseek(FILE* stream, long offset, int origin); // 성공 시에 0 반환, 0이 아닌 수는 오류 1번째 인자는 파일포인터를 넣어주고, 2번째 인자에는 origin으로부터 몇 떨어진 곳을 가리킬 건지 양수 및 음수를 기입하고 마지막 3번째 인자에는 3가지 SEEK_SET, SEEK_CUR, SEEK_END 중 하나를 넣어주면 된다. SEEK_SET : 파일의 처음 SEEK_CUR : 현재 위치 SEEK_END : 파일의 끝 fseek(FILE* stream, 0, SEEK_END); 를 해주게 되면 파일의 커서는 파일의 끝(EOF)을 가리키게 된다. 여기에 파일 커서의 위치를 가져오는 ftell(F..
C++ lower_bound, upper_bound 1. upper_bound 이진 탐색으로 key값을 탐색하고 [begin, end)에서 key보다 작지 않은 첫 번째 수의 iterator 반환 upper_bound(array, array + n, key); 2. lower_bound 이진 탐색으로 key값을 탐색하고 key값보다 큰 수를 찾아 iterator 반환 lower_bound(array, array + n, key); #include #include using namespace std; int main() { int arr[10] = {1,2,3,4,6,7,8,9,10,11}; printf("lower_bound : %d\n", *(lower_bound(arr ,arr + 10, 4))); printf("upper_bound : %d\n", ..
콜라한캔 :: 16진수 문자열로 변환 정확한 크기의 자료형을 제공해주는 헤더 int8_t, uint8_t 8비트 자료형int16_t, uint16_t 16비트 자료형int32_t, uint32_t 32비트 자료형int64_t, uint64_t 64비트 자료형 최소 크기의 자료형 int_least8_t, uint_least8_t 8비트int_least16_t, uint_least16_t 16비트int_least32_t, uint_least32_t 32비트int_least64_t, uint_least64_t 64비트 빠른 최소 크기의 정수형 자료형 int_fast8_t, uint_fast8_t - 8비트 빠른 동작 최소 크기 정수형.int_fast16_t, uint_fast16_t - 16비트 빠른 동작 최소 크기 정수형.int_fast32_t..
void 포인터 void 포인터는 함수로 어떤 데이터가 들어올 지 모르는 상황에서 사용한다. void func(void* pData) { char*pChangeData = (char*)pData; int temp = 'j'; for(int i=0; i
new, delete * C의 malloc과 free의 C++ 버전이다. C에서int *n = (int*)malloc(sizeof(int));free(n); 을 통해 동적할당 및 해제를 했다면, C++에서는 int *n = new int;delete n; 배열의 경우, int *n = new int[array_size];delete[] n; 을 통해 동적 할당 및 해제를 해줄 수 있다. new의 경우, 메모리 할당 실패 시 NULL 포인터를 반환하기 때문에 int *n = new int[4]; if(!n)을 통해 메모리 할당 실패 예외 처리를 해줄 수 있다. 프로젝트의 규모가 크고, 동적 할당이 매우 많은 경우 new의 성공 여부를 계속 검사하는 코드는 성능을 저하시킨다. 따라서 debug 파일을 따로 두어 서비스를 실행하기..