Program Language/C++ 언어

08. C++ string 클래스와 메소드

parkes811 2024. 3. 23. 18:28
  • C++에서의 문자열 처리: string 클래스의 이해

C++ 프로그래밍 언어는 문자열을 다루기 위해 두 가지 방법을 제공합니다

: 전통적인 C언어 스타일의 문자형 배열과 C++에 새롭게 도입된 string 클래스입니다. 

이번 포스트에서는 후자인 string 클래스에 초점을 맞춰 보겠습니다.

 

  • string 클래스의 기본

string 클래스는 문자열을 보다 편리하게 다룰 수 있도록 해주는 C++의 표준 라이브러리 컴포넌트입니다. 

이를 사용하기 위해서는 먼저 #include <string>을 통해 헤더 파일을 포함시켜야 하며, 

std 네임스페이스를 명시해야 합니다.

string 클래스는 문자형 배열보다 사용하기 편리하며, 다음과 같은 방식으로 문자열의 선언 및 초기화가 가능합니다:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str1; // 문자열 선언
    str1 = "C++ Programming"; // 문자열 초기화
    string str2 = "C++"; // 문자열의 선언과 동시에 초기화
}



이처럼 string 객체를 사용하면 문자열을 단순한 변수로 선언할 수 있으며, 문자열의 길이에 대해 개발자가 직접 신경 쓸 필요가 없습니다. string 클래스는 문자열의 길이를 자동으로 관리해 줍니다.

 


 

  • 문자열의 다루기


string 객체는 배열처럼 인덱스를 통해 각 문자에 접근할 수 있으며, 다음과 같이 문자열의 길이를 확인하고, 문자열을 출력할 수 있습니다.

string dog = "Navi";
cout << "현재 dog 변수의 길이는 " << dog.length() << "입니다." << endl;
cout << "강아지 이름의 첫 글자는 " << dog[0] << "입니다.";

 

  • 문자열의 처리

string 클래스를 사용하면, 문자열 사이의 대입 및 결합이 매우 간단해집니다. 예를 들어, 다음과 같이 대입 연산자(=)와 복합 대입 연산자(+=)를 사용하여 문자열을 쉽게 다룰 수 있습니다:

string str1 = "C++ is ";
string str2 = "Cool!";
str1 += str2; // 문자열 결합
cout << str1; // "C++ is Cool!" 출력

 

  • 문자열 입출력

string 객체와 함께 cin과 cout을 사용하여 문자열의 입력과 출력을 처리할 수 있습니다. 하나의 행(line)을 입력 받기 위해서는 getline() 함수를 사용하는 것이 좋습니다:

string name;
cout << "이름을 입력하세요: ";
getline(cin, name);
cout << "안녕하세요, " << name << "님!";


string 클래스는 C++에서 문자열을 다루기 위한 강력하고 유연한 방법을 제공합니다. 그 사용의 용이성과 다양한 기능 덕분에, 개발자는 문자열 관련 작업을 훨씬 더 효과적으로 수행할 수 있습니다.

 

 


 

C++의 string 클래스와 그 메소드들에 대해 알아보겠습니다. 이 클래스는 문자열과 관련된 다양한 작업을 수행할 수 있도록 해주며, 여기에는 몇 가지 핵심적인 메소드들이 있습니다.

 

 

  1. length() 메소드와 size() 메소드 : length()와 size() 메소드는 문자열의 길이를 반환합니다. 두 메소드는 동일한 값을 반환하지만, size()는 컨테이너의 일관된 인터페이스를 제공하기 위해 존재합니다.                                                             
  2. append() 메소드 : append() 메소드는 문자열의 끝에 다른 문자열을 추가합니다. 다양한 오버로드가 있어 문자열, 문자의 일부 또는 특정 문자를 여러 번 추가할 수 있습니다.                                                                                                                                                                     
  3. find() 메소드 : find() 메소드는 문자열 내에서 특정 문자열 또는 문자의 첫 출현 위치를 찾습니다. 찾고자 하는 문자열이나 문자가 없으면 string::npos를 반환합니다.                                                                                                                                                                
  4. compare() 메소드 : compare() 메소드는 두 문자열을 비교하여 같은지, 앞서는지, 뒤따르는지를 판단합니다. 이는 사전식 비교로 수행됩니다.                                                                                                                                                                                                                                                                
  5. replace() 메소드 : replace() 메소드는 문자열의 일부를 다른 문자열로 교체합니다. 교체할 위치, 길이, 그리고 새로운 문자열을 인자로 받습니다.                                                                                                                                                                                                         
  6. capacity() 메소드와 max_size() 메소드 : capacity() 메소드는 문자열이 현재 할당된 저장 공간의 크기를, max_size() 메소드는 문자열이 담을 수 있는 최대 크기를 반환합니다.