◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
tchar는 안시코드(char)와 유니코드(wchar_t) 문자열로 바로 변환할 수 있는 일종의 매크로 타입이다.
이를 이용하면, 해당 프로그램이 안시코드를 필요로 하는지 유니코드를 필요로 하는지에 상관없이 코드를 작성할 수 있다.
프로그램 작성 후, 프로젝트 설정 또는 #define만으로 원하는 코드로 컴파일을 할 수 있다.
visual studio 2008의 경우 기본 설정이 유니코드로 되어있어 tchar를 사용할 경우, 유니코드로 컴파일이 된다.
이를 이용하면, 해당 프로그램이 안시코드를 필요로 하는지 유니코드를 필요로 하는지에 상관없이 코드를 작성할 수 있다.
프로그램 작성 후, 프로젝트 설정 또는 #define만으로 원하는 코드로 컴파일을 할 수 있다.
visual studio 2008의 경우 기본 설정이 유니코드로 되어있어 tchar를 사용할 경우, 유니코드로 컴파일이 된다.
#include#include using namespace std; /* #ifdef _UNICODE #define TCHAR wchar_t #define _T(x) L##x #define _tcscpy_s wcscpy_s #else #define TCHAR char #define _T(x) x #define _tcscpy_s strcpy_s #endif */ #ifdef _UNICODE #define _tcout wcout #else #define _tcout cout #endif int main( ) { wcout.imbue(locale("korean")); TCHAR src[] = _T("MBC 아카데미 디지털 교육원"); TCHAR dest[128]; // 문자열 복사. _tcscpy_s(dest, _countof(dest), src); // 버퍼가 작을 경우, 런타임 에러 발생. _tcout << dest << endl; // 문자열의 일부만 복사. //strncpy_s() _tcsncpy_s(dest, _countof(dest), src, 12); // 12글자만 복사. _tcout << dest << endl; TCHAR str1[128] = _T("MBC 아카데미 "); TCHAR str2[] = _T("디지털 교육원"); // 문자열 합성. _tcscat_s(str1, _countof(str1), str2); _tcout << str1 << endl; // 문자열의 일부만 합성. _tcsncat_s(str1, _countof(str1), str2, 6); // 한글 1글자를 1글자로 해석한다. _tcout << str1 << endl; // 문자열 비교. int ret = _tcscmp(src, str1); if(ret == 0) _tcout << _T("같은 문자열.") << endl; else _tcout << _T("다른 문자열.") << endl; // 문자열 포맷 생성. TCHAR gugu[] = _T("구구단"); int dan = 5, row = 2; _stprintf_s(dest, _countof(dest), _T("%s : %d x %d = %d"), gugu, dan, row, dan*row); _tcout << dest << endl; return 0; }