본문 바로가기
IT/C++

C++ Strings(c_str() / Substrings)

by icebear3000 2023. 5. 29.
반응형

문자열 Strings

 

문자열의 포인터

  문자열은 .c_str() 멤버 함수를 갖고 있으며, 이 함수는 첫 번째 요소를 가리키는 포인터를 반환합니다. 또한, 우리의 문자열이 구성된 null로 종료된 문자 배열을 가리키는 포인터를 반환한다고도 말합니다.

 

#include <iostream>
#include <string>
int main()
{
    std::string s = "Hello World.";
    std::cout << s.c_str();
}

//Hello World.

 

 이 멤버 함수는 const char* 유형이며, 우리의 std::string 변수를 const char* 매개변수를 받는 함수에 전달하고자 할 때 유용합니다.

 

 

부분 문자열(Substrings)

.substr() 

 문자열에서 Substrings을 생성하기 위해 .substr() 멤버 함수를 사용합니다. 이 함수는 주어진 위치에서부터 특정 길이를 갖는 부분 문자열을 반환합니다. 함수의 형식은 .substring(시작_위치, 길이)입니다.

 

#include <iostream>
#include <string>

int main()
{
    std::string s = "Hello World.";
    std::string mysubstring = s.substr(6, 5);
    std::cout << "The substring value is: " << mysubstring;
}

//The substring value is: World

 

 이 예제에서는 "Hello World." 값을 갖는 주 문자열이 있습니다. 그런 다음 "World" 값만을 가진 부분 문자열을 생성합니다. 이 부분 문자열은 주 문자열의 여섯 번째 문자부터 시작하며, 길이는 다섯 글자입니다.

 

.find()
 문자열에서 부분 문자열을 찾기 위해 .find() 멤버 함수를 사용합니다. 이 함수는 문자열 내에서 부분 문자열을 검색합니다. 부분 문자열이 발견되면 함수는 첫 번째 발견된 부분 문자열의 위치를 반환합니다.

 

 이 위치는 부분 문자열이 주 문자열에서 시작하는 문자의 위치입니다. 부분 문자열이 발견되지 않으면 함수는 std::string::npos라는 값을 반환합니다. 함수 자체의 유형은 std::string::size_type입니다.

 

#include <iostream>
#include <string>

int main()
{
    std::string s = "This is a Hello World string.";
    std::string stringtofind = "Hello";
    std::string::size_type found = s.find(stringtofind);
    if (found != std::string::npos)
    {
    	std::cout << "Substring found at position: " << found;
    }
    else
    {
    	std::cout << "The substring is not found.";
    }
}

// Substring found at position: 10

 

 여기에는 주 문자열과 찾고자 하는 부분 문자열이 있습니다. 부분 문자열을 .find() 함수에 인수로 제공합니다. 함수의 반환 값을 found 변수에 저장합니다. 그런 다음 이 변수의 값을 확인합니다. 값이 std::string::npos와 같지 않으면 부분 문자열이 발견된 것입니다. 메시지와 주 문자열에서 부분 문자열이 발견된 문자의 위치를 출력합니다.

 

반응형

'IT > C++' 카테고리의 다른 글

C++ 수명 (Lifetime)  (0) 2023.05.30
C++ Automatic Type Deduction (auto)  (0) 2023.05.30
C++ References 정리  (0) 2023.05.28
C++이란?  (0) 2023.05.27
C++ Pointers 정리  (0) 2023.05.27

댓글