Какая библиотека делает 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 (), вам нужно включить заголовочный файл cstring.
#include <cstring>
Это был ответ, который я искал, но не нашел прямого ответа здесь.
Функция strlen () объявлена в заголовочном файле string.h
#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;
}
#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