Как узнать длину строки
Перейти к содержимому

Как узнать длину строки

  • автор:

String Length in C

In C, a string is an array of characters that is terminated with a null character "\0" . The length of a string will be determined by counting all the characters in the string (except for the null character) .

Scope of Article

  • In this article, we will learn to find the length of a String in C.
  • All the methods to find the length of a String will be explained in this article.
  • Every method will be explained using syntax, images, and examples.

Introduction

The string length in C is equal to the count of all the characters in it (except the null character "\0").

For Example, the string "gfddf" has a length of 5 and the string "4343" has a length of 4 .

Note: In C, a String is an array of characters that is terminated with a null character "\0" to indicate the end of the string.

How to Find the String Length in C?

We can find the length of a String by counting all the characters in it (before the null character) using a for loop. We can also use the built-in string.h library function strlen() or the sizeof() operator.
Let us understand how to use these methods in the coming sections.

String Length in C using a User-Defined Function

We can find the length of a string using a user-defined function by iterating over the string in a for loop and incrementing the count of characters (length) by 1 till it reaches the null character "\0" and then returning the count.

Let's take a look at its implementation:
Code

Output

Explanation:

In the above example, we are finding the length of a string by iterating over it in a for loop and incrementing the count by 1 in each iteration till it reaches the null character. The value of count after the end of the for loop will be equal to the length of the string.

String Length in C Using Built-In Library Function

The length of a string can be found using the built-in library function strlen() in string.h header file. It returns the length of the string passed to it (ignoring the null character).

Syntax

The string is passed to the strlen() function, which returns its length.

Let us take a look at its implementation.
Code

Output :

In the above example, we are finding the length of a string by using the string.h library function strlen() , which returns the length of the string passed to it.

String Length in C Using the sizeof() Operator

We can also find the length of a string using the sizeof() Operator in C . The sizeof is a unary operator which returns the size of an entity (variable or value).

The value is written with the sizeof operator which returns its size (in bytes).

Let us take a look at its implementation:
Code

Output

In the above example, we are finding the length of the string "g4343" using the sizeof operator in C. The sizeof operator returns its length as 6 in the output as It returns the size of an operand, not the string length (including null values). But here, if we print length-1 then we get the length of the string.

Длина строки в Java. Метод length()

В этой статье мы поговорим про метод length() . Он позволяет определять длину строк в Java и сравнивать длины этих строк между собой. Давайте посмотрим, как это делается.

Описание метода

Вышеупомянутый метод length() возвращает длину строки в Java, при этом длина определяется, как равная числу шестнадцатиразрядных Юникод-символов в исследуемой строке. Метод использует довольно простой синтаксис:

Таким образом, возвращается длина последовательности символов. Но давайте лучше посмотрим, как это происходит на примерах.

Определяем длину строки в Java

Итак, у нас есть строка, в которой надо определить длину:

Консольный вывод будет следующим:

Вы можете проверить работу этого метода самостоятельно, используя любой онлайн-компилятор Java, например, этот.

Сравниваем длины строк в Java

Метод length() позволяет не только узнать длину строк, но и сравнить их длины. Вот, как это можно реализовать:

Получим следующий результат:

В результате метод length() позволяет нам как узнать длину строки, так и сравнить несколько строк. Но, как вы уже заметили, это был простейший код. Если же вы хотите прокачать навыки Java-разработчика на более продвинутом уровне, добро пожаловать на курс не для новичков:

String Length in C Language

In the example shown above, the length of the string str is 6.

In this tutorial, first, we will show how to use a user defined function to calculate length of a string, and then we will show you a built-in library function strlen(). We also show you the uses of the sizeof operator for string literals.

String Length Using User Defined Function

You can write a user defined function which returns the number of characters in a string.

int stringLength ( char * str )
{
int i = 0 ;

printf ( "Length of the string str is => %d \n " , stringLength ( str ) ) ;

Here, we iterate the while loop from i = 0 until we do not encounter the ‘\0’ character. The value of i is increased by 1 in each iteration of the while loop. When the loop ends, the value of i is the length of the string.

String Length Using Built-In Library Function

The built-in library function strlen() can also be used to determine string length.

strlen() function:

Header file:

Syntax:

Argument: This function takes an argument of the type pointer to char.

Return value: This function returns the length of the string str. Note that size_t is just an alias of an unsigned integer.

//Example2.c
#include<stdio.h>
#include<string.h>

int main ( )
{
char str1 [ 30 ] = "STRING ARRAY" ;
char * str2 ;
char * str3 ;

str2 = str1 ;
str3 = "STRING POINTER" ;

printf ( "Length of the string str1 is => %ld \n " , strlen ( str1 ) ) ;
printf ( "Length of the string str2 is => %ld \n " , strlen ( str2 ) ) ;
printf ( "Length of the string str3 is => %ld \n " , strlen ( str3 ) ) ;
printf ( "Length of the string " STRING LITERALS " is => %ld \n " , strlen ( "STRING LITERALS" ) ) ;

Here, we pass string array, string pointer, and string literal to the strlen function, and the function returns the length of the string.

String Length Using sizeof Operator

We also can use the sizeof operator for string length (only for string literal). But, we have to subtract 1 from the value returned by this operator, because it also counts the’\0’ character. For array and pointer, the sizeof operator returns the allocated size of the array and the pointer, respectively.

int main ( )
{
char str1 [ 30 ] = "STRING" ;
char * str2 = str1 ;

printf ( "Length of " STRING " is => %d \n " , ( sizeof ( "STRING" ) — 1 ) ) ;
printf ( "Allocated size of the str1 array is => %d \n " , sizeof ( str1 ) ) ;
printf ( "Size of the str2 pointer is => %d \n " , sizeof ( str2 ) ) ;

Here, in Line no 9, we pass the string literal “STRING” and get the size, including the ‘\0’ character. So, we subtract 1 and get the actual size of the string.

When we pass an array to the sizeof operator, it returns the allocated size of the array, which is 30, and when passing a character pointer, it returns the size of the pointer.

Conclusion

So, in this tutorial, we have shown you how string length can be calculated in various ways. You can use in your code whichever method is best suited for you.

22.3 – Длина и емкость std::string

После того, как вы создали строку, часто бывает полезно узнать ее длину. Здесь в игру вступают операции с длиной и емкостью.

Длина строки

Длина строки – это довольно просто, это количество символов в строке. Для определения длины строки есть две идентичные функции:

size_type string::length() const
size_type string::size() const

Обе эти функции возвращают текущее количество символов в строке, исключая завершающий ноль.

Хотя, чтобы определить, есть ли в строке какие-либо символы или нет, можно использовать length() , но более эффективно использовать функцию empty() :

bool string::empty() const

Возвращает true , если в строке нет символов, иначе – false .

Есть еще одна функция, связанная с размером, которую вы, вероятно, никогда не будете использовать, но мы опишем ее здесь для полноты картины:

size_type string::max_size() const

Возвращает максимальное количество символов, которое может содержать строка. Это значение будет варьироваться в зависимости от операционной системы и архитектуры системы.

Емкость строки

Емкость (вместимость) строки показывает, сколько памяти выделено объектом строки для хранения ее содержимого. Это значение измеряется в строковых символах, исключая символ завершающего нуля. Например, строка с емкостью 8 может содержать 8 символов.

size_type string::capacity() const

Возвращает количество символов, которое строка может хранить без перераспределения памяти.

Обратите внимание, что емкость больше, чем длина строки! Хотя длина нашей строки равна 8, на самом деле она занимала достаточно памяти для 15 символов! Зачем так сделано?

Здесь важно понимать, что если пользователь хочет поместить в строку больше символов, чем позволяет ее емкость, то для получения большей емкости строка должна быть перераспределена в памяти. Например, если строка имеет длину и емкость 8, то добавление любых символов в строку приведет к переразмещению объекта в памяти. Сделав емкость больше размера фактической строки, пользователь получил некоторое буферное пространство для расширения строки до необходимости перераспределения.

Как оказалось, перераспределение – это плохо по нескольким причинам:

Во-первых, перераспределение строки относительно дорого. Сначала необходимо выделить новую память. Затем каждый символ в строке необходимо скопировать в новую память. Если строка большая, это может занять много времени. Наконец, необходимо освободить старую память. Если вы выполняете много перераспределений, этот процесс может значительно замедлить работу вашей программы.

Во-вторых, всякий раз, когда строка перераспределяется, адрес содержимого строки в памяти изменяется на новое значение. Это означает, что все ссылки, указатели и итераторы строки становятся недействительными!

Обратите внимание, что строки не всегда размещаются с емкостью, превышающей длину. Рассмотрим следующую программу:

Эта программа выводит:

Результаты могут отличаться в зависимости от компилятора.

Давайте добавим к строке один символ и посмотрим, как изменится емкость:

Это дает следующий результат:

void string::reserve()
void string::reserve(size_type unSize)

Второй вариант этой функции устанавливает емкость строки минимум на unSize (она может быть больше). Обратите внимание, что для этого может потребоваться перераспределение.

Если вызывается первый вариант этой функции или второй вариант вызывается с unSize , меньшим, чем текущая емкость, функция попытается уменьшить емкость, чтобы она соответствовала длине. Этот запрос необязателен для выполнения.

В этом примере показаны две интересные вещи. Во-первых, хотя мы запросили емкость 200, на самом деле мы получили емкость 207. Гарантируется, что емкость всегда будет не меньше, чем вы запросили, но может быть и больше. Затем мы запросили изменение емкости, чтобы она соответствовала длине строки. Этот запрос был проигнорирован, так как емкость не изменилась.

Если вы заранее знаете, что собираетесь создать большую строку, выполняя множество строковых операций, которые увеличивают размер строки, вы можете избежать многократного перераспределения строки в памяти, сразу установив для строки необходимую ей емкость:

Результат этой программы будет меняться каждый раз. Вот результат одного выполнения:

Вместо того чтобы перераспределять sString несколько раз, мы устанавливаем емкость один раз, а затем заполняем строку. Это может очень влиять на производительность при формировании больших строк с помощью конкатенации.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *