C ++ 문자열

C ++는 다음 두 가지 유형의 문자열 표현을 제공합니다.

  • C 스타일 문자열입니다.
  • 표준 C ++에 도입 된 문자열 클래스 유형입니다.

C 스타일 문자열

C 스타일 문자열은 C 언어 내에서 시작되었으며 C ++ 내에서 계속 지원됩니다. 이 문자열은 실제로는 문자로 끝나는 1 차원 문자 배열입니다.null문자 '\ 0'. 따라서 널로 끝나는 문자열에는 문자열과 그 뒤에 오는 문자를 포함합니다.null.

다음 선언 및 초기화는 "Hello"라는 단어로 구성된 문자열을 만듭니다. 배열 끝에 널 문자를 포함하려면 문자열을 포함하는 문자 배열의 크기가 "Hello"라는 단어의 문자 수보다 하나 더 많습니다.

char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

배열 초기화 규칙을 따르면 위의 문장을 다음과 같이 작성할 수 있습니다.

char greeting[] = "Hello";

다음은 C / C ++에서 위에 정의 된 문자열의 메모리 표현입니다.

실제로 문자열 상수의 끝에 널 문자를 배치하지 않습니다. C ++ 컴파일러는 배열을 초기화 할 때 문자열 끝에 '\ 0'을 자동으로 배치합니다. 위에서 언급 한 문자열을 인쇄 해 보겠습니다.

#include <iostream>

using namespace std;

int main () {

   char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

   cout << "Greeting message: ";
   cout << greeting << endl;

   return 0;
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

Greeting message: Hello

C ++는 널로 끝나는 문자열을 조작하는 광범위한 함수를 지원합니다.

Sr. 아니요 기능 및 목적
1

strcpy(s1, s2);

문자열 s2를 문자열 s1에 복사합니다.

2

strcat(s1, s2);

문자열 s2를 문자열 s1의 끝에 연결합니다.

strlen(s1);

문자열 s1의 길이를 반환합니다.

4

strcmp(s1, s2);

s1과 s2가 같으면 0을 반환합니다. s1 <s2이면 0 미만; s1> s2이면 0보다 큽니다.

5

strchr(s1, ch);

문자열 s1에서 문자 ch의 첫 번째 발생에 대한 포인터를 반환합니다.

6

strstr(s1, s2);

문자열 s1에서 문자열 s2의 첫 번째 발생에 대한 포인터를 반환합니다.

다음 예제는 위에서 언급 한 기능을 거의 사용하지 않습니다.

#include <iostream>
#include <cstring>

using namespace std;

int main () {

   char str1[10] = "Hello";
   char str2[10] = "World";
   char str3[10];
   int  len ;

   // copy str1 into str3
   strcpy( str3, str1);
   cout << "strcpy( str3, str1) : " << str3 << endl;

   // concatenates str1 and str2
   strcat( str1, str2);
   cout << "strcat( str1, str2): " << str1 << endl;

   // total lenghth of str1 after concatenation
   len = strlen(str1);
   cout << "strlen(str1) : " << len << endl;

   return 0;
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10

C ++의 문자열 클래스

표준 C ++ 라이브러리는 string위에서 언급 한 모든 작업을 지원하는 클래스 유형, 추가로 훨씬 더 많은 기능. 다음 예를 살펴 보겠습니다.

#include <iostream>
#include <string>

using namespace std;

int main () {

   string str1 = "Hello";
   string str2 = "World";
   string str3;
   int  len ;

   // copy str1 into str3
   str3 = str1;
   cout << "str3 : " << str3 << endl;

   // concatenates str1 and str2
   str3 = str1 + str2;
   cout << "str1 + str2 : " << str3 << endl;

   // total length of str3 after concatenation
   len = str3.size();
   cout << "str3.size() :  " << len << endl;

   return 0;
}

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

str3 : Hello
str1 + str2 : HelloWorld
str3.size() :  10