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