..

Search

30) string 메소드

30) string 메소드

string 메소드


string 메소드

string 메소드는 string 클래스에 정의된 문자열과 관련된 작업을 할 때 사용하는 메소드입니다.

 

string 클래스에서 제공하는 대표적인 문자열 처리 함수는 다음과 같습니다.

 

1. length() 메소드와 size() 메소드

2. append() 메소드

3. find() 메소드

4. compare() 메소드

5. replace() 메소드

6. capacity() 메소드와 max_size() 메소드


length() 메소드와 size() 메소드

length() 메소드는 문자열의 길이를 반환하는 메소드입니다.

size() 메소드도 length() 메소드와 언제나 같은 값을 반환하지만, 그 의미는 약간 다릅니다.

 

length() 메소드는 문자열의 길이를 나타내지만, size() 메소드는 해당 string 객체가 메모리에서 실제 사용하고 있는 크기를 나타냅니다.

예제

string str1;

string str2 = "C++ Programming";

 

cout << "문자열 str1의 길이는 " << str1.length() << "입니다." << endl;

cout << "문자열 str2의 길이는 " << str2.size() << "입니다.";

코딩연습 ▶

실행 결과

문자열 str1의 길이는 0입니다.

문자열 str2의 길이는 15입니다.


append() 메소드

append() 메소드는 하나의 문자열의 끝에 다른 문자열을 추가하는 메소드입니다.

 

appned() 메소드를 위한 원형은 다음과 같습니다.

문법

1. 문자열.append(추가할문자열);                 // 추가할 문자열을 맨 끝에 추가함.

2. 문자열.append(추가할문자열, 시작위치, 개수); // 추가할 문자열의 시작 위치부터 개수만큼만 맨 끝에 추가함.

3. 문자열.append(개수, 추가할문자);             // 추가할 문자를 개수만큼 맨 끝에 추가함

 

예제

string str1, str2, str3;

 

str1.append("C++ Programming");

str2.append("C++ Programming", 4, 7);

str3.append(4, 'X');

 

cout << str1 << endl;

cout << str2 << endl;

cout << str3;

코딩연습 ▶

실행 결과

C++ Programming

Program

XXXX


find() 메소드

find() 메소드는 특정 문자열을 찾아, 그 시작 위치를 반환하는 메소드입니다.

 

find() 메소드를 위한 원형은 다음과 같습니다.

문법

1. 문자열.find(찾을문자열);           // 인덱스 0부터 찾을 문자열을 찾아, 그 시작 위치를 반환함.

2. 문자열.find(찾을문자);             // 인덱스 0부터 찾을 문자를 찾아, 그 시작 위치를 반환함.

3. 문자열.find(찾을문자열, 시작위치); // 시작 위치부터 찾을 문자열을 찾아, 그 시작 위치를 반환함.

 

find() 메소드는 해당 문자열에서 찾을 문자열을 찾지 못하면, string::size_type의 string::npos라는 상수를 반환합니다.

 

예제

string str = "C++ Programming";

 

cout << str.find("Pro") << endl;

cout << str.find('r') << endl;

 

if (str.find("Pro", 5) != string::npos)

{

    cout << "해당 문자열을 찾았습니다.";

}

else

{

    cout << "해당 문자열을 찾지 못했습니다.";

}

코딩연습 ▶

실행 결과

4

5

해당 문자열을 찾지 못했습니다.

 

정적 상수인 string::npos는 string 클래스에 static const size_type= -1 로 명시되어 있습니다.

compare() 메소드

compare() 메소드는 두 문자열 간의 내용을 비교하는 메소드입니다.

 

compart() 메소드의 반환값이 참(true)이 되는 경우는 다음과 같습니다.

예제

1. str1.compare(str_02) == 0 // str1과 str2이 같을 경우

2. str1.compare(str_02) < 0  // str1이 str2보다 사전 편찬순으로 앞에 있을 경우

3. str1.compare(str_02) > 0  // str1이 str2보다 사전 편찬순으로 뒤에 있을 경우

 

예제

string str1 = "ABC";

string str2 = "ABD";

 

if (str1.compare(str2) == 0)

{

    cout << str1 << "이 " << str2 << "와 같습니다.";

}

else if (str1.compare(str2) < 0)

{

    cout << str1 << "이 " << str2 << "보다 사전 편찬 순으로 앞에 있습니다.";

}

else

{

    cout << str1 << "이 " << str2 << "보다 사전 편찬 순으로 뒤에 있습니다.";

}

코딩연습 ▶

실행 결과

ABC가(이) ABD보다 사전 편찬 순으로 앞에 있습니다.


replace() 메소드

replace() 메소드는 특정 문자열을 찾아, 그 문자열을 다른 문자열로 대체하는 메소드입니다.

 

replace() 메소드를 위한 원형은 다음과 같습니다.

문법

문자열.replace(대체할문자열의시작위치, 대체할문자열의길이, 새로운문자열);

// 전달된 시작 위치부터 문자열의 길이만큼을 제거한 후에, 새로운 문자열을 삽입함.

 

다음 예제는 문자열에서 "nice"라는 문자열을 찾아, "awesome"으로 바꾸는 예제입니다.

예제

string str1 = "C++ is very nice!";

string str2 = "nice";

string str3 = "awesome";

 

string::size_type index = str1.find(str2);

if (index != string::npos)

{

    str1.replace(index, str2.length(), str3);

}

 

cout << str1;

코딩연습 ▶

실행 결과

C++ is very awesome!

 

replace() 메소드를 사용하기 전에 우선 find() 메소드를 사용하여 해당 문자열이 존재하는지를 파악하는 것이 좋습니다.

capacity() 메소드와 max_size() 메소드

capacity() 메소드는 해당 문자열이 재대입(reallocation)받지 않고 저장할 수 있는 최대 문자열의 길이를 반환합니다.

max_size() 메소드는 해당 문자열이 최대한 대입받으면 가질 수 있는 최대 문자열의 길이를 반환합니다.

 

예제

string str = "C++ Programming";

 

cout << "문자열 str의 length는 " << str.length() << "입니다." << endl;

cout << "문자열 str의 capacity는 " << str.capacity() << "입니다." << endl;

cout << "문자열 str의 max_size는 " << str.max_size() << "입니다.";

코딩연습 ▶

실행 결과

문자열 str의 length는 15입니다.

문자열 str의 capacity는 15입니다.

문자열 str의 max_size는 4611686018427387897입니다.


연습문제