C++:
Поиск длины строки
Как:
C++ предоставляет простой способ найти длину строки с использованием метода length()
класса std::string
. Но если вы предпочитаете классику, вы можете использовать строки в стиле C и strlen()
. Вот пример обоих способов:
#include <iostream>
#include <string>
#include <cstring>
int main() {
// Используя std::string
std::string приветствие = "Привет, мир!";
std::cout << "Длина строки (std::string): " << приветствие.length() << std::endl;
// Используя строку в стиле C
const char *c_приветствие = "Привет, мир!";
std::cout << "Длина строки (стиль C): " << strlen(c_приветствие) << std::endl;
return 0;
}
Пример вывода:
Длина строки (std::string): 13
Длина строки (стиль C): 13
Подробнее:
Изначально C++ унаследовал от C массивы символов в стиле C и сопровождающую их функцию strlen()
. strlen()
вычисляет длину, проходя по массиву до тех пор, пока не встретит нулевой символ, '\0'
. Это простая, но эффективная стратегия, однако она не может сравниться по эффективности с std::string.length()
, которая обычно отслеживает длину для быстрого доступа.
Альтернативы? Конечно:
- Вы также можете использовать метод
size()
, идентичныйlength()
дляstd::string
. - Для строк с широкими символами
std::wstring
и его методlength()
будут вашими друзьями. - Более оригинальные варианты включают написание собственных функций или использование алгоритмов вроде
std::distance
с итераторами.
Однако будьте осторожны, std::string::length()
возвращает тип size_t
, беззнаковое целое, которое может привести к неожиданному поведению, если вы используете его с знаковыми типами в выражениях.
См. также:
- Справочник C++ для
std::string::length()
: https://en.cppreference.com/w/cpp/string/basic_string/length - Справочник C++ для
strlen()
: https://en.cppreference.com/w/cpp/string/byte/strlen - Больше о
std::string
в сравнении со строками в стиле C: https://www.learncpp.com/cpp-tutorial/4-4a-c-style-strings/ - Для энтузиастов, желающих глубже изучить класс
std::string
: https://en.cppreference.com/w/cpp/string/basic_string