더듬이의 헬로월드

Hello, World!

프로그래밍 언어/C++ [기본]

[C++기본] 22.문자열-3

더듬이 2021. 9. 23. 19:06
728x90
#include<iostream>

using namespace std;

unsigned int GetLength(const wchar_t *Ptr) {
    int length = 0;
    while (true){
        if (*(Ptr + i) == '\0')
            break;
        else
            length++;
    }
    return length;
}

int main() {
    wchar_t szname[20] = L"Helllo";

    int iLen =GetLength(szname);

    cout << iLen;
}

문자열의 길이를 구하는 프로그램이다.

1.2바이트 크기의 변수만을 사용하는 와이드바이트 형식의 문자 자료형, wchar을 사용하였다.

  1. 역참조 수정이 불가능한, 상수화된 포인터로 매개변수를 전달받았다.

3.문자열의 마지막은 항상 ('/0' , 0 , null) 문자로 끝난다.

4.이점을 이용하여 포인터의 다음칸을 계속 검사하면서, 널문자가 나올 떄까지 length를 증가시키며

길이를 계산한다.

문자열의 간단한 연산 프로그램인데, 이는 같은 크기의 자료형과 이를 가리키는 포인터를 통해 가능하다는 것을 알고 있어야한다.

Etc.while문

unsigned int GetLength(const wchar_t *Ptr) {
    int length = 0;
    while (*(Ptr + length) != '\0'){//Ptr[length]와 같음
            length++;
        }
return length;
}

짧게 쓴다면 이런 형식도 될 것이다.

하지만 가독성이 떨어지기 떄문에 추천하는 방법은 아니다.

문자열 이어 붙이기

wcscat_s는 wchar_t형 문자열 두개를 이어 붙이는 함수이다.

두 문자열을 합치기 위해 필요한 연산은 무엇일까?

일단, 원본은 const 카워드가 없다.

문자를 합쳐저야 하기 떄문에 각 공간의 변경이 필요하기 떄문이다.

공간에 추가 문자로 변경하거나, 마지막 널문자를 바꿔줘여 하기 떄문.

반면에 추가할 문자열은 그럴 필요가 없으므로 상수화된 포인터로 매개변수를 가져오는 것이다!

728x90

'프로그래밍 언어 > C++ [기본]' 카테고리의 다른 글

[C++기본] 24.문자열-5  (0) 2021.09.23
[C++기본] 23.문자열-4  (0) 2021.09.23
[C++기본] 21.문자열-2  (0) 2021.09.23
[C++기본] 20.문자열-1  (0) 2021.09.23
[C++기본] 19.문자  (0) 2021.09.17