추천, 2024

에디터의 선택

문자 배열과 문자열의 차이점

C ++은 문자 배열과 문자열을 모두 지원합니다. C ++은 두 가지 모두를 사용할 때 상당한 이점이 있기 때문입니다. 그러나 문자 배열을 조작 할 수 없다면 클래스 문자열의 개발이 향상됩니다. 문자 배열과 문자열 모두 문자 시퀀스를 포함합니다. 그러나 문자 배열과 문자열 간의 근본적인 차이점은 "문자 배열"을 표준 연산자로 조작 할 수 없다는 것입니다. 반면 "문자열"객체는 표준 연산자로 조작 할 수 있습니다. 문자 배열과 문자열 사이의 다른 차이점에 대해 알아 보겠습니다.

비교 차트

비교의 근거문자 배열
기본문자 배열은 문자 데이터 유형의 변수 모음입니다.문자열은 클래스이고 문자열의 변수는 클래스 "문자열"의 객체입니다.
통사론char array_name [size];string string_name;
색인 생성문자 배열의 개별 문자는 배열의 해당 색인을 통해 액세스 할 수 있습니다.문자열에서 특정 문자는 "string_name.charAt (index)"함수로 액세스 할 수 있습니다.
데이터 형식문자 배열은 데이터 유형을 정의하지 않습니다.문자열은 C ++에서 데이터 유형을 정의합니다.
연산자C ++의 연산자는 문자 배열에 적용 할 수 없습니다.문자열에 표준 C ++ 연산자를 적용 할 수 있습니다.
경계배열 경계는 쉽게 오버런됩니다.경계가 넘치지 않습니다.
접속하다빠른 액세스.느린 접근.


문자 배열의 정의

문자 배열은 "char"데이터 유형의 변수 모음입니다. 그것은 1 차원 배열이나 2 차원 배열이 될 수 있습니다. "널 종료 문자열"이라고도합니다. 문자 배열은 연속적인 메모리 주소에 저장된 문자 시퀀스입니다. 문자 배열에서 특정 문자는 해당 색인을 통해 액세스 할 수 있습니다. "널 문자"는 문자 배열을 종료합니다.

문자 배열의 예를 들어 봅시다 :

 char name [] = { 'A', 'j', 'a', 'y', '\ 0'}; 또는 char name [] = "Ajay"; 

여기서 "char"는 문자 데이터 유형이고 "name"은 문자 배열의 변수 이름입니다. 문자 배열을 초기화하는 두 가지 방법을 보여 줬습니다. 첫 번째 방법에서는 null이 명시 적으로 언급되고 두 번째 방법에서는 컴파일러에서 자동으로 null을 삽입합니다.

문자열의 끝은 항상 널 문자입니다. 문자 배열의 종료 문자입니다. 문자 배열은 내장 데이터 유형이 아닙니다. 우리는 그것을 선언함으로써 문자 배열을 생성한다. 문자 배열에는 표준 연산자를 적용 할 수 없습니다. 문자 배열을 처리하려면, (strlen (), strlwr (), strupr (), strcat ())과 같은 내장 함수가 있습니다. 표준 연산자는 문자 배열에 적용 할 수 없으므로 표현식에 참여할 수 없습니다.

문자 배열에 대한 문자 포인터를 만들 수도 있습니다.

예를 들어 이해해 봅시다.

 char s1 [] = "Hello"; char s2 [] = "선생님"; s1 = s1 + s2; // 오류 연산자를 적용 할 수 없습니다. s2 = s1; // 오류 문자 포인터 char * s = "Morning"; char * p; p = s; // 실행합니다. 

위의 예에서는 두 개의 문자 배열 s1, s2와 두 개의 문자 포인터 s와 p를 선언했습니다. 문자 배열 s1과 s2가 초기화되면, 덧셈 연산자 (+) 나 대입 연산자가 문자 배열에서 작동하지 않음을 알 수 있습니다. 그러나 문자 포인터는 다른 문자 포인터에 할당 될 수 있습니다.

문자 배열이 초기화되면 다른 문자 집합으로 다시 초기화 할 수 없다는 것을 기억하십시오. 문자 배열 또는 null로 끝나는 문자열에 대한 액세스는 C ++의 문자열과 비교하여 빠릅니다.

문자열의 정의

문자열은 C ++의 기본 제공 데이터 유형이 아닙니다. 이것은 "string"유형의 클래스 객체입니다. C ++ 에서처럼 클래스를 만드는 것은 "유형"을 만드는 것과 같습니다. "string"클래스는 C ++ 라이브러리의 일부입니다. 문자 또는 문자 배열 전체를 보유합니다. 표준 문자열 클래스를 개발하는 데에는 세 가지 이유가 있습니다.

  • 첫 번째 는 "일관성"입니다. 문자 배열은 데이터 유형이 아닙니다.
  • 두 번째 는 "편리함"입니다. 문자 배열에서 표준 연산자를 사용할 수 없습니다.
  • 세 번째 는 "안전"이며, 배열 경계는 쉽게 오버런됩니다.

예를 들어 문자열을 이해해 보겠습니다.

 문자열 s1; s1 = "여보세요"; 문자열 s2 ( "Good morning"); string s3 = "Hennery"; 문자열 s4; 

위의 선언에서 네 개의 문자열 변수 또는 객체 (s1, s2, s3, s4)가 선언됩니다. 위의 선언에서 문자열을 초기화하는 세 가지 방법을 보여 줬습니다. 문자열 s1이 선언되고 별도로 초기화됩니다. 캐릭터 라인 s2는 클래스 "String"의 생성자에 의해 초기화됩니다. s3 문자열은 선언시 일반 데이터 형식으로 초기화됩니다. 우리는 표준 연산자를 문자열 변수에 적용 할 수 있습니다.

 s4 = s1; // 하나의 문자열 객체를 다른 객체에 할당 s4 = s1 + s2; // 두 개의 문자열을 추가하고 결과를 세 번째 문자열에 저장 if (s3> s2) // 두 문자열을 비교 문자열 s5 (s1); 기존 문자열 객체를 사용하여 새 문자열 객체 만들기 

위의 코드에서 문자열에 다양한 연산자가 적용되고 다양한 연산이 수행됩니다. 첫 번째 명령문은 한 문자열 객체를 다른 문자열 객체로 복사합니다. 두 번째 명령문에서는 두 개의 문자열이 연결되어 세 번째 문자열에 저장됩니다. 세 번째 문에서는 두 개의 문자열이 비교됩니다. 네 번째 문에서는 기존 문자열 개체를 사용하여 새 문자열 개체가 만들어집니다.

문자열에 대한 액세스는 문자 배열 또는 null로 끝나는 문자열과 비교할 때 느립니다.

문자 배열과 문자열의 주요 차이점

  1. 문자 배열은 문자 데이터 유형의 변수 집합입니다. String은 문자열을 선언하기 위해 인스턴스화되는 클래스입니다.
  2. 인덱스 값을 사용하여 문자 배열의 문자에 액세스 할 수 있습니다. 반면에 문자열의 특정 문자에 액세스하려면 함수 문자열 's_name.charAt (index)를 사용하여 액세스 할 수 있습니다.
  3. 마찬가지로 배열은 데이터 유형이 아니기 때문에 문자도 데이터 유형이 아닙니다. 반면에 String은 클래스가 참조 유형으로 사용되므로 문자열은 데이터 유형이라고 할 수 있습니다.
  4. 문자 배열에는 연산자를 적용 할 수 없지만 String에는 연산자를 적용 할 수 있습니다.
  5. 배열 문자 배열은 길이가 고정되어 있고 경계가 쉽게 오버런 될 수 있습니다. 여기서 String에는 경계가 없습니다.
  6. 배열 요소는 연속적인 메모리 위치에 저장되므로 문자열 변수보다 빠르게 액세스 할 수 있습니다.

결론:

문자 배열을 조작 할 수 없으면 표준 문자열 클래스가 개발되었습니다.

Top