Я хочу знать разницу между char *
и string
. , например, в этом коде:разница между char * и string
char *a;
string b;
Может кто-нибудь мне помочь, пожалуйста?
Я хочу знать разницу между char *
и string
. , например, в этом коде:разница между char * и string
char *a;
string b;
Может кто-нибудь мне помочь, пожалуйста?
Предполагая, что вы имеете в виду std::string
, string
- стандартный класс библиотеки, моделирующий строку.
char * - это всего лишь указатель на один символ. В C и C++ существуют различные функции, которые будут принимать указатель на один символ в качестве параметра и будут отслеживать по памяти до достижения значения 0 памяти (часто называемого нулевым терминатором ). Таким образом, он моделирует строку символов; strlen
- пример функции (из стандартной библиотеки C), которая делает это.
Если у вас есть выбор, используйте std::string
, так как вам не нужно беспокоиться о памяти.
char*
является указателем на примитивный тип: char
string
является первым объектом класса из стандартной библиотеки шаблонов, которые оборачивает много функциональных возможностей (например, конкатенации двух строк) и делает его легче работать.
2 очень разные сущности!
Его простой, char *a;
объявляет указатель 'a' типа char
, он будет указывать на постоянную строку или массивы символов. String b;
объявляет б как объект string
type.String здесь есть класс, который содержит несколько функций членов манипуляции строка (методы) .Вы можете посмотреть здесь для получения дополнительной информации: http://www.cplusplus.com/reference/string/string/
Один пример программы, описывающий string
объекта и его функции-члена приведен ниже:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str ("steve jobson");
cout <<"hello the name of steve jobs consists of"<< str.size() << " characters.\n";
return 0;
}
str
объявлен как строки объекта и функция член size()
вызывается для получения размера ул.
char*
также может быть указателем на 0 (первое) место массива символов. Он часто использовался в C, где использование String не поддерживается.
, если вы объявите char указателем на массив символов, тогда ваш ответ будет прав, но здесь его еще что-то еще, его единственный символ – 0decimal0
, даже будучи одним символом, это массив с одной ячейкой. * a относится к его значению, а & a относится к его адресу в памяти. – brbtsl
Я не понимаю, к какому массиву вы обращаетесь, «логический» или «физический». – 0decimal0
Если вы беспокоитесь о функциональности, string
является Функционалchar*
i.е вам не нужно беспокоиться о space
символ *
декларация/инициализации: char* str = "Use";
Добавление данных: XXX
длина нахождения: strlen(str);
// необходимо включить <string.h>
или создать свой собственный
строка
декларация/инициализации: string str = "Use";
Добавление данных: str += " This!"
длина нахождения: str.length()
// все в один файл заголовка
@DavidHeffernan кошка может съесть печенье, печенье не может съесть кошку , – Maroun
@SuvP В крайних случаях печенье может прийти к кошке. – Maroun
@SuvP Вы знаете, что общего между ними? – Maroun