궁금증 연구소

안녕하세요. 궁금증연구소입니다.

오늘 포스팅 주제는 "[c++] string.begin()의 포인터와 string name의 포인터는 다르다."입니다.

 

#include <iostream>
#include <algorithm>
#include <stdio.h>

using namespace std;

main()
{
    string name = "abc";
    printf("%d\n", name);
    printf("%d", name.begin());
}

c++에서는 string 객체를 제공합니다. 따라서 c에서 존재하는 문자열을 다루는 어려움이 많이 해소됩니다.

string객체의 메서드 중에는 begin() 메서드가 존재하는데, 객체에 저장된 문자열의 첫 번째 위치(포인터)를 리턴해줍니다.

 

위 예를 보면 name string 객체에 문자열 abc를 저장 후, begin()을 출력하고 있습니다.

주의할 점은, string 객체의 이름 자체가 가리키는 주소와 begin()이 리턴하는 주소는 다르다는 점입니다.

 

보통 문자열 배열에서는 char str [100]이라고 한다면,

첫 번째 문자열의 주소는 문자열의 이름인 str에 저장되어 있지만, string의 경우는 다릅니다.

 

 

 

이를 착각하면 안 되는 이유는 for_each, copy_if, transform 등의 함수 사용에 있어, 배열의 포인터를 매개변수로 넘겨야 하기 때문입니다. 

 

끝~

 

 

 

 

 

 

 

 

 

 

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading