какой заголовочный файл C ++ объявляет strlen?
==============================================

 К какой библиотеке принадлежит `strlen()`? 

  Это принадлежит `cstring`? или `string`? 

  Я попробовал следующий код, и он работает: 

 
```
include <iostream>
using namespace std;
//withou include<string.h>

int main() {
    char * str="abc";
    cout<<strlen(str);
}

```
  Я установил `str` равным 3 и дал правильный ответ 3. 

  Почему он работает без включения строки библиотеки или cstring? 

  Стоит ли включать туда строку cstring или строку? string.h? 

 

>   К какой библиотеке принадлежит strlen ()? Это относится к cstring? или строка? 
> 
>  

  Ни то, ни другое. `cstring` и `string` не являются  *библиотеками* , они являются  *заголовочными файлами* , которые определяют интерфейс  для различных функций и классов. 

  Стандарт языка Си говорит, что функция `strlen` объявлена в заголовочном файле `<string.h>`. В C ++ включение `<string.h>` помещает `strlen` в глобальное пространство имен, в то время как включение `<cstring>` вместо этого помещает `strlen` в пространство имен `std`. 

  Фактическая реализация  *функции*  функции `strlen` находится в стандартной библиотеке C (также известной как `libc` или `CRT` на некоторых платформах). Обычно это связано с вашим исполняемым файлом во время ссылки. 

 
>   Почему он работает без включения строки библиотеки или cstring? 
> 
>  

  В вашем конкретном компиляторе и инструментарии, так получилось, что заголовочный файл `<iostream>` включает в себя `<cstring>`, Это означает, что любой код, который включает первый, также получает последний бесплатно. Это деталь реализации , на которую нельзя полагаться - если вы скомпилируете свой код с другим компилятором, вы можете внезапно оказаться в море ошибок компилятора. 

  Надо также включить сюда `<cstring>`; даже если это не требуется для вашего конкретного компилятора, это может быть необходимо для других компиляторов. 

 

 Функция strlen () объявлена в заголовочном файле string.h 

   [Из библиотеки GNU C](http://www.gnu.org/software/libc/manual/html_node/String-Length.html)