C++는 문자열의 길이를 찾습니다 - sizeof(), size(), strlen() 및 length()에 대한 자세한 설명

sizeof(), size(), strlen(), length() 구분 및 사용 방법

1. sizeof()와 strlen()을 구별합니다.

우선, sizeof() [피연산자가 차지하는 공간의 바이트 수]는 c의 기본 연산자 입니다 . (연산자이지 함수가 아님) 매개변수로 유형, 포인터, 배열, 함수 등을 취할 수 있습니다.

그 기능은 구현에 의해 생성된 가장 큰 개체를 수용하도록 보장된 바이트 크기를 얻는 것입니다. 컴파일 타임에 계산되기 때문에 sizeof()는 동적으로 할당된 메모리 공간의 크기를 반환하는 데 사용할 수 없습니다 .

char str[30];
gets(str);      //输入str
cout<<sizeof(str)<<endl;

여기서 "Hello"를 입력하면 결과는 어떻게 될까요? 5? 아니면 6?
맞습니다. 출력 결과는 30입니다. 왜냐하면 이 프로그램의 sizeof() 함수는 문자 배열 str이 차지하는 공간의 크기를 계산하는 것이고 문자 배열 str이 생성될 때 시스템이 자동으로 30바이트를 할당하기 때문입니다. 그것은 Space 바이트이므로 무엇을 입력하든(문자 배열의 범위를 초과하지 않는 경우) 출력 결과는 30이 됩니다. ( 이것은 또한 sizeof() 의 값이 컴파일 타임에 계산됨을 보여줍니다 )

sizeof()비교할 때 strlen() 은 문자열 의 길이를 계산하는 데 사용되는 함수이며 (문자열만 계산 가능) '\0'은 종료자로 사용되며 반환되는 길이에는 '\0'이 포함되지 않습니다. , strlen의 결과는 실행 중일 때만 나옵니다(컴파일 시 평가가 아님).

char str[30];
gets(str);
cout<<strlen(str)<<endl;

여기서 "Hello"를 입력하면 출력 결과는 문자 배열 str의 길이인 5가 됩니다.

  • strlen 함수로 얻은 문자열의 길이는 문자열의 첫 번째 요소부터 첫 번째 '\0'까지의 요소 수입니다.
  • sizeof로 얻은 결과는 문자열을 저장하는 변수가 차지하는 공간이므로 '\0'이 포함되어야 하며 '\0' 뒤에 여유 공간이 있으면 결과에도 포함됩니다.

둘, size() 함수와 length() 함수

C++에서 문자열의 길이를 구할 때 size() 함수는 length() 함수와 같은 기능을 합니다.

string str;
cin>>str;
cout<<str.size()<<endl;
cout<<str.length()<<endl;

여기서도 문자열 "Hello"를 입력하고 두 함수의 결과는 모두 5입니다.

요약하다:

  1. sizeof()는 유형, 포인터, 배열 및 함수를 매개변수로 사용할 수 있으며 해당 값은 컴파일 시간에 계산되어 피연산자가 차지하는 공간의 크기(바이트)를 얻습니다.
  2. strlen() 함수 의 매개 변수 는 char*(문자 포인터)만 가능하므로 문자 배열(char str[ ])을 계산할 때 일반적으로 strlen() 함수를 사용합니다 (문자 배열 계산에만 사용할 수 있음). ).
  3. size() 함수와 length() 함수는 모두 문자열의 길이를 계산하는 데 사용되며 char*는 매개변수로 사용할 수 없습니다. 또한 size() 함수는 벡터 유형의 길이를 가져올 수도 있습니다.

추천

출처blog.csdn.net/Terminal_ve/article/details/126512580