В C++
, есть string
встроенный тип данных?
Спасибо.
В C++
, есть string
встроенный тип данных?
Спасибо.
Каково определение встроенного, которое вы хотите использовать? Является ли он встроенным в набор инструментов компилятора, который у вас есть, он должен. Специально ли он обрабатывается компилятором? Нет, компилятор рассматривает этот тип как любой пользовательский тип. Обратите внимание, что то же самое, вероятно, можно применить ко многим другим языкам, для которых большинство людей ответят "да".
Один из фокусов комитета С++ заключается в том, чтобы поддерживать основной язык на минимальном уровне и обеспечивать как можно больше функциональности в библиотеках. Это имеет два намерения: основной язык более стабилен, библиотеки могут быть переопределены, расширены... без изменения ядра компилятора. Но что более важно, тот факт, что вам не нужна специальная поддержка компилятора для обработки большей части стандартной библиотеки, гарантирует, что основной язык достаточно выразителен для большинства применений.
Упрощенный в отрицательной форме: если языку требуется специальная поддержка компилятора для реализации std::string
, это будет означать, что пользователи не имеют достаточной мощности для выражения этой или аналогичной концепции на основном языке.
Это не примитив, то есть он не "встроен" в способ int
, char
и т.д. Ближайшим встроенным строковым типом является char *
или char[]
, который является старым способом C для выполнения строгих материалов, но даже для этого требуется куча библиотечного кода для продуктивного использования.
Скорее, std::string
является частью стандартной библиотеки, которая поставляется с почти каждым современным компилятором С++. Вам нужно будет #include <string>
(или включить в него что-то еще, что включает его, но на самом деле вы должны указать, к чему относится ваш код), чтобы использовать его.
Если вы говорите о std::string, то нет.
Если вы говорите о символьном массиве, я думаю, вы можете рассматривать его как массив встроенного типа.
Зависит от того, что вы подразумеваете под встроенным, но, вероятно, нет. std::string
определяется стандартной библиотекой (и, следовательно, стандартом С++) и очень универсально поддерживается различными компиляторами, но не является частью основного языка, такого как int
или char
.
Нет.
Встроенные или "примитивные" типы могут использоваться для создания функциональных возможностей строки со встроенным типом char
. Это, наряду с функциями полезности, было тем, что использовалось в C. В С++ все еще есть эта функциональность, но был добавлен более интуитивный способ использования строк.
Класс string
является частью пространства имен std и является экземпляром класса шаблона basic_string
. Он определяется как
typedef basic_string<char> string;
Это класс с возможностью динамического изменения размера по мере необходимости и имеет много функций-членов, действующих как утилиты. Он также использует перегрузку оператора, поэтому он более интуитивно понятен в использовании. Однако эта функциональность также означает, что у нее есть накладные расходы с точки зрения скорости.
Может быть встроен может, но это не обязательно.
Стандартная библиотека С++ имеет документированный интерфейс для своих компонентов. Это может быть реализовано либо как библиотечный код, либо как встроенные компиляторы. В стандарте не говорится, как это должно быть реализовано.
Когда вы используете #include <string>
, у вас есть реализация std::string. Это может быть либо потому, что компилятор реализует его напрямую, либо потому, что он ссылается на некоторый код библиотеки. Мы не знаем точно, если мы не проверим каждый компилятор.
Никто из известных компиляторов не выбрал встроенный тип, потому что им это не нужно. Производительность реализации чистой библиотеки была, очевидно, достаточно хорошей.
Нет. Это часть стандартной библиотеки.
Определенно нет. String - это класс из стандартной библиотеки. char * или char [] являются встроенными типами, но char, int, float, double, void, bool без каких-либо добавлений (as указатели, массивы, модификаторы знака или размера - без знака, длинные и т.д.) являются фундаментальными типами.
Нет, string - это класс.
Нет. Существуют разные функции (например, Microsoft Visual С++), но char * - это способ представления строк в С++.