본문 바로가기

프로그래밍/C++34

문자열 관련 함수 정리(멀티바이트->유니코드->TCHAR) 원래 자주 검색해서 쓰고 그랬는데 요즘엔 그것도 귀찮고 하나 놔둬야겠다 ㅠ strcpy -> wcscpy -> _tcscpy (문자열을 복사) strncpy -> wcsncpy -> _tcsncpy ( 사이즈 만큼 복사) strlen -> wcslen -> _tcslen (문자열 길이 확인) strcat -> wcscat -> _tcscat (두 문자열 이어 붙이기) strncat -> wcsncat -> _tcsncat (사이즈 만큼 이어 붙이기) strcmp -> wcscmp -> _tcscmp (문자열 비교) (반환 값(-1, 0, 1)) strncmp -> wcsncmp -> _tcsncmp ( 사이즈 만큼 문자열 비교) stricmp -> wcsicmp -> _tcsicmp (대소문자를 구별하지.. 2014. 1. 14.
예외 처리(try, catch, throw) 코드에서 예외 처리를 하는 방법은 많이 존재한다. 주로 조건문을 사용해서 예외 처리를 하게 되지만, C++에서 예외 처리 메커니즘인 try, catch, throw문에 대해서 살펴 보도록 하자. 순서는 try안에서 throw를 해주면 catch에서 예외를 처리 한다고 보면 된다. 예제는 다음과 같다. #include int divide( int a, int b ); void main() { int a, b; std::cout a >> b; try { // 예외가 발생하면, if( b == 0 ) throw b;// throw로 넘겨주면, std::cout 2010. 4. 4.
템플릿(template) 변수 형에 대해서 오버로딩을 해서 여러가지 기능을 수행하는 함수를 중복정의를 할 수 있다. 하지만 그것 보다 더 좋은것이 존재 하니, 그것은 템플릿, 개념 자체는 어렵지 않다. 예제를 보자. #include // 최소 클래스 템플릿 선언 template class Data { T2 name; T1 rank; public: Data( T1 a, T2 b ); ~Data(); }; // 외부에서 선언 하는 방법 template Data::Data( T1 a, T2 b ) { name = new char[strlen(b)+1]; strcpy( name, b ); rank = a; } // 소멸자. template Data::~Data() { std::cout 2010. 4. 4.
임시 객체 생성 특별히 어려운 내용은 아니고, 임시 객체, 말 그대로 잠깐 생겼다 사라지는 객체라고 보면 되겠다. #include class AAA { int n; public: AAA( int _n ) { std::cout 2010. 4. 4.
연산자 오버로딩(operator overlonding)(2) 연산자 오버로딩에 대해 알아 보았다, 하지만 아직 연산자 오버로딩에 대해 완벽하게 알고 있는 것 같진 않다. void main() { Point p1(1, 2); // p1.operator(10); p1 + 10; p1.ShowPoint(); // 10.operator(p1); 10 + p1; // 과연 이게 우리가 원하는 오버로딩인가? p1.ShowPoint(); // 값 또한 바뀌지 않았다. } // 결과 // 11 12 // 11 12​ 그렇다면 저 구문에 대해서 실행을 해주고 싶다면 어떻게 해야 할까? 이런 부분에 대해서는 전역으로 연산자 오버로딩을 해 주어야 한다. class Point { ... public: friend void operator+( int val, Point& p ); } v.. 2010. 4. 4.
연산자 오버로딩(operator overloading)(1) 기존에 존재하는 +, ++, == 등의 연산자를 프로그래머가 중복 정의가 가능하다. operator+, operator++ 등으로 오버로딩이 가능한데, 멤버 함수내에 선언할 수도 있고, friend 키워드를 사용해서 전역으로 사용 할 수도 있지만, 멤버 함수에 선언해서 사용하는 것에 대해서 먼저 살펴 보자. 연산자 오버로딩의 사용 예, #include class Point { int x, y; public: Point( int _x = 0, int _y = 0 ) : x(_x), y(_y) {} void ShowPoint(){std::cout 2010. 4. 4.