본문 바로가기
공부/C, C++

[C] wchar_t 함수 ( wcslen( ), wcscat_s( ) )

by 김샤랑 2022. 1. 9.

[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

댓글