[C] wchar_ 함수 ( wcslen( ), wcscat_s( ) )
이번 포스팅에서는 문자열 길이를 알려주는 함수와 2개의 문자열을 이어 붙여주는 함수에 대해 알아보고, 직접 구현해보는 것까지 해보겠다.
#include <wchar.h>을 추가하는 것을 잊지 말자.
- wcslen( )
문자열 길이를 알려주는 함수이다.
wchar_t szName[10] = L"Raimond";
int iLen = wcslen(szName);
iLen을 출력하면 szName의 문자열의 개수를 알 수 있다.
- 내가 문자열 길이를 알려주는 함수 만들기!
unsigned int GetLength(const wchar_t* _pStr)
{
int i = 0; // 문자 개수 체크 용도
while(true)
{
wchar_t c = _pStr[i];
// wchar_t c = *(_pStr+i) // 위 구문과 같은 뜻
if('\0' == c) // Null 문자가 나오면 끝내겠다.
{
break;
}
++i;
}
return i;
}
- wcscat_s( )
문자열을 이어 붙여주는 함수이다.
wchar_t szString[100] = L"abc";
wcscat_s(szString, 100, L"def");
// 중간에 100(버퍼 크기)를 받는 이유는 이어 붙인 문자열의 합이 배열 크기를 초과하면 안되기 때문이다.
- 내가 문자열을 이어 붙여주는 함수 만들기!
void StrCat(wchar_t* _pDest, unsigned int _iBufferSize, const wchar_t* _pScr)
{
int iDestLen = GetLength(_pDest);
int iSrcLen = GetLength(_pSrc);
//예외 처리: 이어붙인 최종 문자열 길이가 원본 저장 공간을 넘어서려는 경우
if(_iBufferSize < iDestLen + iSrcLen +1) //Null 문자 공간까지 계산
assert(nullptr); //#include <assert.h> 추가
//문자열 이어 붙이기
//1. 목적지 문자열의 끝을 확인(문자열이 이어 붙을 시작 위치)
iDestLen; // Dest 문자열의 끝 인덱스
//2. 반복적으로 Src 문자열을 Dest 끝 위치에 복사하기
//3. Src 문자열의 끝을 만나면 반복 종료
for(int i=0; i<iSrcLen;++i)
{
_pDest[iDestLen + i] = _pSrc[i];
}
return 0;
}
- 오버로딩
wscat_s 함수를 살펴보면 다른 개수의 인자를 받는 두개의 함수가 있다는 것을 알 수 있다. 이 경우에는 오버로딩이 되어 있다고 말한다.
오버로딩이란? => 함수가 같은 이름으로 여러 개 만듦. (오버라이딩과 구별하기)
함수명이 동일하지만 인자의 개수가 달라서 컴파일러가 구별 가능하다.
인자의 개수가 같더라도 자료형이 다르다면 구별 가능하다.
'공부 > C, C++' 카테고리의 다른 글
[C] 동적 할당 malloc( ); (0) | 2022.01.10 |
---|---|
[C] 구조체 포인터 (0) | 2022.01.10 |
[C] 문자열, wchar_t (0) | 2022.01.09 |
[C] const 와 포인터 (0) | 2022.01.04 |
[C] const, const 값 바꾸기 (0) | 2022.01.04 |
댓글