какой заголовочный файл 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?

16

Решение

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

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

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

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

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

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

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

16

Другие решения

Чтобы использовать strlen (), вам нужно включить заголовочный файл cstring.

#include <cstring>

Это был ответ, который я искал, но не нашел прямого ответа здесь.

10

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

Из библиотеки GNU C

7

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
char *pointer1="Idle hands are the devil's workshop.";

int length;
length=strlen(pointer1);

char *pointer2;
pointer2=new char(length+1);

strcpy(pointer2,pointer1);

cout<<"pointer 2:"<<pointer2;
delete[] pointer2;

return 0;
}
-1
#include <stdio.h>
#include <string.h>

int main(void)
{
char *string = "Hello World";
printf("%lu\n", (unsigned long)strlen(string));
return 0;
}

Эта программа напечатает значение 11, которое является длиной строки «Hello World». Символьные строки хранятся в массиве типа данных, называемого char. Конец строки находится путем поиска первого нулевого символа в массиве.

Из библиотеки GNU C

-3
По вопросам рекламы [email protected]