문자 리터럴
문자 리터럴은 작은 따옴표로 묶인 문자입니다. 그래서,
숯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는 독점 및 구현 정의된 와이드 문자입니다.
결론
문자 리터럴은 작은따옴표로 묶인 단일 문자입니다. 이스케이프 시퀀스는 작은따옴표로도 묶일 수 있는 문자입니다. 문자열 리터럴은 큰따옴표로 묶인 일련의 문자입니다. 문자열 리터럴은 으로 끝나는 문자 배열입니다. 같음 및 관계 연산자는 문자 리터럴과 함께 작동합니다. 등호 연산자는 문자열 리터럴과 함께 작동하지만 관계 연산자는 문자열 리터럴과 함께 작동하지 않습니다. 문자 식별자는 비교에 사용할 수 있지만 문자열 식별자는 비교에 사용하면 안 됩니다. 원시 문자열 리터럴을 사용하면 이스케이프 시퀀스를 무시하고 줄 바꿈을 존중하면서 문자열을 입력된 대로 표시할 수 있습니다.
크리스