본문 바로가기

C++/_tcslen(), lstrlen(), strlen()

C++ Unicode String Length

VC++ 에서 유니코드 문자열의 길이를 확인하기 위한 함수 예제


문자열의 길이를 확인하기 위해서 strlen(), lstrlen(), _tcslen() 등의 함수를 테스트한다


#include <iostream>

#include <windows.h>

#include <tchar.h>


char *pBuffer = "ABCDE";

cout << strlen(pBuffer) << endl; // 5


char *pBuffer2 = "A그리고B";

cout << strlen(pBuffer2) << endl; // 8


wchar_t *wch = L"12345";

cout << lstrlen(wch) << endl; // 5


TCHAR *tch = _T("54321");

cout << _tcslen(tch) << endl; // 5


TCHAR *msg = _T("사랑합니다");

cout << _tcslen(msg) << endl; // 5


_TCHAR *msg2 = _T("안녕하세요");

cout << _tcslen(msg2) << endl; // 5


wchar_t *wstr = L"C그리고D";

cout << lstrlen(wstr) << endl; // 5


TCHAR *str = _T("E그리고F");

cout << _tcslen(str) << endl; // 5



테스트 결과 각 환경에 따라서 다음과 같은 함수를 선택하여 사용할 경우에 오류가 없고 정확한 길이를 얻을 수 있었다


명시적으로 MBCS 문자열이면서 1바이트 문자로만 구성된 경우:                  strlen()


명시적으로 MBCS 문자열이면서 1~2바이트 문자로 구성된 경우:                  명시적인 유니코드 문자열이나 TCHAR형식의 문자열로 선언하거나 MBCS문자열을 WBCS 문자열로 변환해주는 함수를 사용하여 변환한 후에 문자열의 길이를 확인한다


명시적으로 WBCS(Unicode) 문자열인 경우:                                             lstrlen()


TCHAR을 사용한 문자열인 경우:                                                            _tcslen()