C++ 문자열 리터럴을 사용하는 방법

How Use C String Literal



컴퓨터 키보드에는 문자가 인쇄되어 있습니다. 키를 누르면 화면에 캐릭터가 표시됩니다. 참고: 공백도 문자입니다. 문자열 리터럴은 일련의 문자입니다. 이 문서에서는 C++ 문자열 리터럴을 사용하는 방법을 설명합니다. 이 기사를 이해하려면 C++ 배열과 포인터에 대해 알아야 합니다.

문자 리터럴

문자 리터럴은 작은 따옴표로 묶인 문자입니다. 그래서,







ID1= '에게'; ID2= 'NS'; ID3= '4'; 아이덴티티4= '6';

모두 다른 문자 정의입니다. 작은따옴표로 묶인 숫자는 정수가 아니라 문자입니다.



작은따옴표로 묶인 (아래 참조)와 같은 이스케이프 시퀀스는 문자입니다. 그래서,



ID1= '' ';

캐릭터입니다.





큰따옴표로 묶인 단일 기호는 문자가 아닙니다. 한 문자의 문자열입니다. 따라서 A 또는 c 또는 2는 문자가 아니라 각각 한 문자의 문자열입니다.

char의 변수는 다음과 같이 나중에 프로그램에서 재할당할 수 있습니다.



아이덴티티= 'NS';
아이덴티티= '그리고';

식별자에 할당된 문자가 변경되지 않도록 하려면 프로그램에서 나중에 다음과 같이 정의 앞에 예약어 const를 붙입니다.

상수 아이덴티티= 'NS';

변수 ident는 읽기 전용이라고 합니다.

문자열 리터럴

문자열 리터럴은 큰따옴표로 묶인 문자 시퀀스입니다. 그래서,

ID1[] = '사랑 해요'; ID2[] = '난 너 셋이 싫어'; ID3[]
= '우리는 세계입니다'; 아이덴티티4[] = '안녕 월드!';

모두 문자열 리터럴의 다른 정의입니다. 큰따옴표의 사용에 유의하십시오. 문자열에 대한 일반 변수와 같은 것은 없습니다. 문자열 리터럴은 문자 배열이며, 여기서 {}로 구분하는 대신 시퀀스가 ​​로 구분됩니다. 문자는 쉼표로 구분되지 않습니다. 문자열 리터럴의 문자 수보다 큰 숫자는 대괄호 안에 넣을 수 있습니다. 그러나 대괄호는 비워 두는 것이 좋습니다.

큰따옴표로 묶인 단일 문자는 문자가 아닙니다. 한 문자의 문자열입니다. 따라서 A 또는 c 또는 2는 문자가 아니라 각각 한 문자의 문자열입니다.

문자열 변수는 나중에 프로그램에서 전체 리터럴의 재할당을 허용하지 않습니다(아래 참조). 그러나 개별 문자를 다시 할당할 수 있습니다. 아래를 참조하십시오.

문자 또는 리터럴의 작은따옴표 및 큰따옴표

작은 따옴표를 문자로 사용하려면 다음과 같이 하십시오.

아이덴티티= ' '';

문자열 리터럴의 문자로 큰따옴표를 사용하려면 다음과 같이 하십시오.

아이덴티티[] = '떨어져있는'CD';

백슬래시는 구분 기호와의 충돌을 피하기 위해 이스케이프 시퀀스에 사용됩니다. 큰따옴표를 문자로 사용하려면 백슬래시가 필요하지 않습니다. ''는 괜찮습니다. 문자열 리터럴에 작은 따옴표를 사용하려면 백슬래시가 필요하지 않습니다:ab'cd 괜찮습니다.

백슬래시는 문자를 이스케이프하는 데 사용되므로 문자로 사용하거나 문자열 리터럴에서 사용할 때 다른 백슬래시로 이스케이프해야 합니다.

탈출 시퀀스

이스케이프 시퀀스는 다음 중 하나입니다.

''? \ 에게 NS NS N NS>NS V

각 이스케이프 시퀀스는 일반적으로 작은 따옴표 안에 문자로 또는 큰 따옴표 안에 이스케이프 시퀀스로 입력됩니다.

  • ' : 작은따옴표 내에서 작은따옴표 문자로 사용됩니다.
  • : 리터럴 내에서 큰따옴표 문자로 사용됩니다.
  • ? : 부터 ? 예약된 문자이므로 리터럴로 이스케이프해야 합니다.
  • \ : 다른 의미를 나타내지 않도록 백슬래시는 문자 또는 문자열 리터럴로 이스케이프되어야 합니다.
  • a : 문자로 사용하거나 문자열 리터럴 내에서 사용할 때 알람 벨을 한 번 울립니다.
  •  : 문자열 리터럴 내에서 백스페이스로 표시되어 이전 문자를 제거합니다.
  • f : 문자로 사용되거나 리터럴 내에서 사용될 때 다음 페이지가 프린터에 공급되도록 합니다.
  • : 다음 문자가 인쇄될 커서를 반환하지만 현재 줄 안에 있습니다.
  • : 운영 체제에 따라 커서를 다음 줄의 시작 부분으로 되돌리거나 바로 다음 줄로 되돌립니다.
  • : 가로 탭을 만듭니다.
  • v : 세로 탭을 만듭니다.

캐릭터 작업

연쇄

정의 시 다음과 같이 두 개의 문자열 리터럴을 공백으로 결합할 수 있습니다.

아이덴티티[] = '알파벳' '데프';
비용<<아이덴티티<< 'N';

출력은 abcdef 입니다. 이 정의는 2개 이상의 리터럴로 확장될 수 있습니다. 참고: 명령문은 할당이 아니라 정의입니다. 정의는 다음과 같이 줄을 구분하는 공백으로 다음 줄로 계속될 수도 있습니다.

아이덴티티[] = '알파벳' '데프'
'필기 해';
비용<<아이덴티티<< 'N';

출력은 abcdefghi입니다.

참고: 문자에 대한 작은 따옴표는 둘 이상의 기호를 가질 수 없으므로 이러한 방식으로 문자를 연결할 수 없습니다.

등호 연산자

같은 경우 같은 문자는 동일합니다. 동일한 경우가 아니면 동일하지 않습니다. 고려하다,

부울 결과= 'NS' == 'NS';
비용<<결과<< 'N';

==는 같음을 의미하고 =는 할당 대상 및 같지 않음을 의미합니다. 출력은 true의 경우 1입니다. 고려하다,

부울 결과= 'NS' == 'NS';
비용<<결과<< 'N';

출력은 거짓의 경우 0입니다. 고려하다,

부울 결과= 'NS' == '씨';
비용<<결과<< 'N';

출력은 거짓의 경우 0입니다. 고려하다,

부울 결과= 'NS' ! = 'NS';
비용<<결과<< 'N';

!=는 같지 않음을 의미하고 =는 할당됨 및 같지 않음을 의미합니다. 출력은 거짓의 경우 0입니다. 고려하다,

부울 결과= 'NS' ! = 'NS';
비용<<결과<< 'N';

출력은 true의 경우 1입니다. 고려하다,

부울 결과= 'NS' ! = '씨';
비용<<결과<< 'N';

출력은 true의 경우 1입니다.

따라서 == 및 !=는 등호 연산자입니다.

관계 연산자

C++의 일반 문자의 경우 오름차순으로 숫자가 대문자 앞에 오고 소문자 앞에 옵니다.

그래서= 비슷하게 설명된다.

객체로서의 문자열 리터럴

배열은 특정 데이터 유형 시퀀스의 시작 부분에 대한 상수 포인터입니다. 마찬가지로 문자열은 문자 시퀀스의 시작 부분에 대한 상수 포인터입니다. 다음 정의를 비교하십시오.

정수[] = {, 4, 5, 6, 7};
NS[] = {'에', '또는', '미디엄', '에게', 'N'};
스트리[] = '여성';

첫 번째 배열은 int 배열이며 5개의 요소가 있습니다. 두 번째 및 세 번째 배열은 이름은 다르지만 요소 수는 동일한 문자 배열입니다. 두 번째 및 세 번째 어레이는 이름이 같지만 동일합니다. 두 번째 배열의 텍스트 내용은 중괄호로 구분됩니다. 문자는 쉼표로 구분되며 각 문자는 작은따옴표로 묶입니다. 세 번째 배열의 텍스트 내용은 큰따옴표로 구분됩니다. 문자는 쉼표로 구분되지 않으며 각 문자는 작은따옴표로 묶이지 않습니다. 두 번째 및 세 번째 배열은 문자열을 생성하는 두 가지 방법이며 세 번째 방법이 더 나은 방법입니다.

arr은 배열의 첫 번째 요소에 대한 상수 포인터입니다. 즉, arr은 3의 값이 변경되더라도 항상 정수 3을 갖는 위치를 가리킵니다. 배열의 크기인 5개 요소는 실제로 일정하지 않습니다. 그러나 배열의 각 값은 변경할 수 있습니다.

str은 배열의 첫 번째 요소에 대한 상수 포인터입니다. 즉, str은 'w'의 값이 변경되더라도 항상 'w' 문자가 있는 위치를 가리킵니다. 문자 배열의 크기인 5개 요소는 실제로 일정하지 않습니다. 그러나 리터럴의 각 값은 변경할 수 있습니다.

stri는 리터럴(배열)의 첫 번째 요소에 대한 상수 포인터입니다. 즉, w 값이 변경되더라도 stri는 항상 문자 w가 있는 위치를 가리킵니다. 5개의 요소인 문자열 리터럴(배열)의 크기는 실제로 일정하지 않습니다. 그러나 리터럴의 각 값은 수정할 수 있습니다.

배열 또는 문자열 리터럴에서 상수는 무엇입니까? 배열 또는 리터럴의 첫 번째 요소의 메모리 주소는 배열 또는 리터럴의 이름(식별자) 값으로 유지되며 변경할 수 없습니다. 음, 배열이나 리터럴의 크기는 실제로 일정하지 않습니다. 배열 또는 리터럴의 각 값을 변경할 수 있습니다. 다음 코드는 각 배열의 네 번째 요소가 어떻게 변경되었는지 보여줍니다.

정수[] = {, 4, 5, 6, 7};
NS[] = {'에', '또는', '미디엄', '에게', 'N'};
스트리[] = '여성';

[] = 9;
NS[] = '그리고';
스트리[] = '그리고';

비용<<[] << 'N';
비용<<NS<< 'N';
비용<<스트리<< 'N';

출력은 다음과 같습니다.

9
여자여자
여성

위의 세 번째 정의와 같이 정의된 문자열 리터럴의 요소는 배열 인덱스(아래 첨자)로 액세스할 수 있습니다. 출력의 두 번째 줄에 대한 이유는 아래에 나와 있습니다.

정의 첨자

위의 정의에는 아래첨자에 대한 정수가 없습니다. 프로그래머가 요소의 수를 쉽게 결정할 수 없는 경우 아래 첨자에 대한 정수를 생략해야 합니다. 어떤 경우이든 정수는 배열의 요소 수보다 작아서는 안 됩니다.

문자열 리터럴의 경우 정수는 문자열의 문자 수보다 1 이상 커야 합니다. 이는 컴파일러에서 항상 null 문자()를 추가하고 큰따옴표로 구분된 문자열인 배열의 끝에 추가하기 때문입니다. null 문자는 공식 문자열이 아니기 때문에 위의 두 번째 배열 끝에 추가되지 않습니다. 세 번째 배열은 공식 문자열입니다. 다음 코드는 최소 첨자 값을 보여줍니다.

정수[5] = {, 4, 5, 6, 7};
NS[5] = {'에', '또는', '미디엄', '에게', 'N'};
스트리[6] = '여성';

두 번째 정의를 공식 문자열로 만들려면 다음과 같이 null 문자를 추가해야 합니다.

정수[5] = {, 4, 5, 6, 7};
NS[6] = {'에', '또는', '미디엄', '에게', 'N', ' 0'};
스트리[6] = '여성';

이제 출력은 다음과 같아야 합니다.

9
여성
여성

두 번째 여성 없이. 두 번째 배열의 해당 첨자는 5가 아니라 6입니다.

상수 리터럴 값

식별자에 할당된 큰따옴표의 문자가 수정되지 않도록 하려면 나중에 프로그램에서 정의 앞에 다음과 같이 예약어 const를 붙입니다.

상수 아이덴티티[] = '사랑 해요';

문자열 리터럴을 사용한 작업

평등 작업

항등 연산자는 == 및 != 입니다. 두 문자열의 변수(식별자)를 비교할 때 결국 비교되는 것은 리터럴의 포인터(주소)입니다. 그것은 잘못된 것입니다. 문자열을 비교하려면 다음 코드와 같이 리터럴을 비교해야 합니다.

부울 결과= '여성' == '여성';
비용<<결과<< 'N';

출력은 true의 경우 1입니다. 비교는 사전 방식으로 수행되지만 숫자가 오름차순으로 먼저 나오고 대문자보다 먼저 오고 소문자보다 먼저 옵니다. 다음 코드의 출력은 false의 경우 0입니다.

부울 결과= '여성' ! = '여성';
비용<<결과<< 'N';

문자열 리터럴을 사용한 관계 연산자

관계 연산자는 문자열 리터럴에서 작동하지 않습니다.

원시 문자열 리터럴

원시 문자열 리터럴을 사용하면 이스케이프 시퀀스를 무시하고 줄 바꿈을 존중하면서 문자열을 입력된 대로 표시할 수 있습니다. 다음 코드를 고려하십시오.

NS[] =NS'(알파벳\d efg 그는
클름N'
'옵큐
먼저)';
비용<< str << '
N';

출력은 다음과 같습니다.

abc\d efg 그는
klmn n'' opq
첫째

코드에서 원시 문자열 리터럴은 R로 시작하고 그 뒤에 및 ( . 로 끝납니다. ) 및 .

C++ 기본 문자열 리터럴 유형

char 유형은 원래 C++ 유형이며 일반적으로 문자를 8비트로 저장합니다.

char16_t

이것은 문자를 16비트로 저장합니다.

char32_t

이것은 문자를 32비트로 저장합니다.

wchar_t

char16_t 및 char32_t는 와이드 문자입니다. wchar_t는 독점 및 구현 정의된 와이드 문자입니다.

결론

문자 리터럴은 작은따옴표로 묶인 단일 문자입니다. 이스케이프 시퀀스는 작은따옴표로도 묶일 수 있는 문자입니다. 문자열 리터럴은 큰따옴표로 묶인 일련의 문자입니다. 문자열 리터럴은 으로 끝나는 문자 배열입니다. 같음 및 관계 연산자는 문자 리터럴과 함께 작동합니다. 등호 연산자는 문자열 리터럴과 함께 작동하지만 관계 연산자는 문자열 리터럴과 함께 작동하지 않습니다. 문자 식별자는 비교에 사용할 수 있지만 문자열 식별자는 비교에 사용하면 안 됩니다. 원시 문자열 리터럴을 사용하면 이스케이프 시퀀스를 무시하고 줄 바꿈을 존중하면서 문자열을 입력된 대로 표시할 수 있습니다.

크리스