본문 바로가기

프로그래밍/C++11

Unicode 와 ANSI 문자의 변환을 해주는 매크로 링크 : http://blog.naver.com/bc8c/61528989 f vs 2005로 넘어오면서 부터 msvs는 unicode를 기본으로 사용 하는 듯 하다. 해서 속성 값을 멀티바이트 문자열로 바꿔주어야 하는데, 윈도우 프로그래밍을 하면서 앞으로 미래를 생각한다면 unicode로 프로그래밍 하는 것이 좋다. 제프리 리처가 쓴 windows via c/c++의 초반부에 이러한 이유로 unicode를 사용하여 프로그램 하라고 나오는데, 당장은 ANSI와 unicode의 변화가 완전하게 이루어 지지 않았다. 따라서 상황에 따라 알아서 함수들을 사용하게 해주는 매크로를 정의한 헤더가 바로 tchar.h 이다. 이 헤더파일을 include 해주면 unicode와 ANSI 문자열에 관한 함수들을 사용 할 .. 2010. 12. 11.
가변인자 사용하기 가변인자란? 이름 그대로 "변화가 가능한 인자"라는 뜻입니다. 인자는 함수에 전달하는 값이며, 매개변수라고도 불립니다. 가변인자를 사용한 함수의 예를 보자면, 처음 C를 입문하게 되면 printf()함수를 사용하여 "Hello, World!" 부터 시작하게 됩니다. 이 printf() 함수가 가변인자를 사용한 함수입니다. 또한 scanf() 함수 또한 마찬가지 입니다. t가변인자를 쉽게 사용하기 위해 제공되는 매크로가 있습니다. va_list args; va_start(ap, v) va_arg(ap, t) va_end(ap) 만약 이 매크로를 사용하지 않으면 그와 같이 동작하는 코드를 구현해야겠죠? 한번 해보시는것도 좋겠지만, 어렵게 길을 돌아갈 필요는 없을 듯합니다. 그리고 va_list는 char* .. 2010. 11. 12.
const 위치에 따른 동작 C++ 언어에서 const는 "constant"의 약자로 "변함없는" 이라는 뜻을 가지고 있습니다. 즉, const는 변수를 상수화 시킬 때 사용되어 지고, C++에서 제공하는 키워드 입니다. 아래 소스코드는 const의 위치에 따른 동작에 대해서 설명하고 있습니다. class의 맴버함수에서 모든 위치에 const를 사용한 예로 보자면, const char* Function( const char* const szMessage) const 와 같을 수 있습니다. 왼쪽의 const부터 본다면, 첫번째 const는 반환값에 대한 상수화입니다. 값을 반환 받으려면, 꼭 const 타입으로 받아야 한다는 것으로 사용 범위를 제한 하는 것입니다. 두번째 const는 해당 포인터가 가르키는 대상을 상수화하는 것입니다.. 2010. 11. 12.
함수 포인터 함수 포인터는 함수를 가르키는 포인터입니다. 즉, 함수의 주소를 저장하는 포인터 변수 입니다. 함수 포인터를 선언 할 때는 반환 타입이 무엇인지.. 어떤 매개변수를 갖는 함수인지를 나타내어 선언 합니다. 만약 void Print(char* szMessage) 라는 함수를 가르키기 위해서는 void (*pFunc)(char*) 로 선언하게 되고, pFunc라는 변수를 사용하여 반환 타입이 void이고, 매개변수로는 char*를 갖는 함수의 주소를 저장 할 수 있습니다. - 소스 코드 #include void Print(char* szMessage) { printf("%s\n", szMessage); } int main(int argc, char* argv[]) { void (*pfunc)(char*); p.. 2010. 11. 11.
C++ 파일 입출력 각각의 파일 입출력 생성 방법 ifstream in; // 입력 ofstream out; // 출력 fstream io; // 입출력 파일 연결 멤버 함수 void open(const char *filename, int mode, int access=filebuf::openprot); filename : 연결할 파일의 이름 mode : 파일을 어떻게 열지를 결정 ios::app -> 모든 출력을 그 파일의 끝에 덧붙인다. ios::ate -> 파일을 열 때 그 파일의 끝을 찾아준다. ios::binary -> 2진 형식으로 연다. ios::in -> 파일이 입력용임을 의미 ios::nocreate -> 현재 파일이 존재하지 않으면 open() 함수 실패 ios::noreplace -> 파일이 이미 존재하.. 2010. 10. 27.