프로그래밍 언어/C++
void* 포인터 크기
각 시스템마다 차이가 있다. 16비트 - 2 바이트 32비트 - 4 바이트 64비트 - 8 바이트 #include int main() { void *ptr; printf("The size of pointer value : %d", sizeof(ptr)); return 0; } 또는 #include using namespace std; int main() { cout
[C++] string(문자열) 클래스 변환(atoi, c_str()) 등 정리
1) 함수 설명 int atoi(const char* str) 헤더파일(C) : 헤더파일(CPP) : 설명 : C style의 문자열을 입력받아서 int (숫자) 타입으로 변환하여 리턴한다. std::string c_str() 반환형이 char * 이므로, 해당하는 string의 첫번재 문자의 주소값(포인터)를 반환한다. 예제 헤더파일 : , , 이름공간 : using namespace std; char* > string char * cStr = "Cstring"; string cppStr = cStr; cout
[C/C++] atoi, atof, atol 함수 (char* to int), 문자열 > 값 타입
1. atoi, atof, atol 함수 이름의 기원 atoi 함수를 살펴보면 a - to - i 이렇게 나눌 수 있다. a = char(ASCII), i = int 로 보면 char(ASCII) to integer 라는 이름으로 풀 수 있다. 즉. char 타입을 int 타입으로 변경한다. atoi = char to int = 문자열을 정수 타입으로 atof = char to double = 문자열을 실수 타입으로 atol = char to long int = 문자열을 long 정수 타입으로 중요한것은 여기서 char는 char[N], char* 로 표현이 되는 문자열을 말한다. C++ 에서는 string 클래스에 의해서 문자열을 string으로 표현할 수 있는데, C언어에서는 string 클래스가 존..
[C++] stoi, stof, stol, stod 함수에 대해서 (string to int), 문자열 > 특정 타입
1. C++에서 string 타입의 문자열을 숫자로 바꾸는 함수들의 이름. ▼ C++11 부터 아래 함수들을 사용할 수 있다. stoi = string to int stof = string to float stol = string to long stod = string to double stoul = string to unsigned int stoll = string to long long stoull = string to unsigned long long stold = string to long double 2. C++ stoi, stof, stol, stod 함수 원형과 매개변수가 뜻하는 것 ▼ 함수 원형 1) 정수형 int stoi(const string& str, size_t* idx = 0, i..
[C++] to_string 함수에 대해서, 특정 타입 > 문자열
1. std::to_string 함수 원형과 함수 설명 ▼ std::to_string 헤더파일 ▼ std::to_string 함수 원형 string to_string (int num); string to_string (long num); string to_string (long long num); string to_string (unsigned num); string to_string (unsigned long num); string to_string (unsigned long long num); string to_string (float num); string to_string (double num); string to_string (long double num); ▼ std::to_string 함수 ..
C++ 전처리기로 코드 영역 블록 설정
#pragma region에서는 Visual Studio 편집기의 개요 기능을 사용할 때 확장하거나 축소할 수 있는 코드 블록을 지정할 수 있다. #pragma region이름 #pragma endregion코멘트 // pragma_directives_region.cpp #pragma region Region_1 void Test() {} void Test2() {} void Test3() {} #pragma endregion Region_1 int main() {} 참고 : region 및 endregion pragma | Microsoft Learn
C++ std::shared_ptr로 thread safe callback 구현하기
리소스를 로딩한다거나 어떤 연산을 수행하기 위해 thread를 만들어서 동작시킬 수 있지만 thread가 언제 끝날지 보장할 수 없기 때문에 이것에 대해 방어적인 코딩이 필요하다. 예를 들어 리소스를 thread로 로딩하고 로딩이 완료될 때 마다 해당 인스턴스로 callback을 하여 리소스 로딩이 완료되었음을 알려주는 구현이라고 가정하자. 이 인스턴스는 자신이 요청한 thread가 완료될 때 까지 삭제하면 안되지만 thread가 언제 끝날지 보장할 수 없기 때문에 thread가 언제 끝나더라도 동작하도록 구현할 필요가 있다. unsafe callback with raw pointer 기존 pointer를 사용해서 구현할 경우 아래와 비슷한 흐름을 가지게 될 것이다. class Character { pu..
C 조건부 전처리기
1. #if #elif #else #endif 기존에 알고있는 조건문인 if else 와 동일한 내용이다 하지만 전처리기라는 부분에서 if else와 차이점은 매크로로 정의된 값에 따라 원하는 코드를 동작할 수도 있고 동작시키지 않을수도 있는 것이다. #include #define NUM 10 int main() { #if NUM == 10 printf("매크로로 정의된 NUM의 값은 10\n"); #elif NUM == 20 printf("매크로로 정의된 NUM의 값은 20\n"); #else printf("매크로로 정의된 NUM의 값은 10도 20도 아님\n"); #endif return 0; } #if 0, #if 1 평가값이 0 이면 다음줄 부터의 내용을 건너뛰고, 평가값이 0이 아니면 처리한다...
C++ 클래스 템플릿에 선언된 friend 함수를 외부에 정의하는 방법
적용 시 오류 template class Stack { ... public: friend std::ostream& operator
C/C++ 예외상황에서의 포인터의 동작
포인터의 사용법의 구문과 의미는 C 표준 문서(http://bit.ly/173cDxJ)에 매우 자세히 설명되어 있다. 그러나 표준 문서가 포인터의 동작을 명확히 정의하지 못하는 경우가 있다. 이러 떄 표준 문서는 포인터의 동작을 다음과 같이 정의한다. - 구현 방법에 따라 정의된 행동(Implementation-defined behavior) 동작에 대한 문서화된 구현을 제공한다. 구현 방법에 따라 정의된 행동의 예로, 정수에 대한 오른쪽 시피트 연산에서 상위 비트의 확장 방법이 있다. - 명시되지 않은 행동(Unspecified behavior) 동작에 대한 구현을 제공하지만 문서화하지 않는다. malloc함수에 인자로 0을 주고, 실핼할 때 메모리가 얼마나 할당되는가 하는 것이 명시되지 않은 행동의 ..