Какой библиотека делает STRLEN() принадлежит? Это относится к cstring? или строка?
Ни то, ни другое. cstring
и string
не являются библиотеками, это заголовочные файлы, которые определяют интерфейс различным функциям и классам.
В стандарте на языке C указано, что функция strlen
объявлена в файле заголовка <string.h>
. В C++, включая <string.h>
, помещается strlen
в глобальное пространство имен, в том числе <cstring>
вместо strlen
в пространство имен std
.
Фактическая реализация функции strlen
находится в стандартной библиотеке C (он же libc
или CRT
на некоторых платформах). Обычно это связано с вашим исполняемым файлом во время соединения.
Почему это работает без включения строки библиотеки или cstring?
В вашем конкретном компиляторе и набора инструментов, просто так получилось, что файл заголовка <iostream>
включает <cstring>
в него, что означает, что любой код, который включает в себя бывший также получает второй бесплатно. Это деталь реализации и на нее нельзя положиться - если вы скомпилируете свой код с другим компилятором, вы можете внезапно оказаться в море ошибок компилятора.
Правильная вещь состоит в том, чтобы также включать <cstring>
; даже если это не обязательно для вашего конкретного компилятора, это может быть необходимо для других компиляторов.
Этот вопрос не соответствует теме, поскольку на него уже ответила официальная документация. –
Его функция PHP. –
@ImranOmer это не похоже на PHP. Скорее, это похоже на C++. –