2013-06-18 4 views
6

Я хочу знать разницу между char * и string. , например, в этом коде:разница между char * и string

char *a; 
string b; 

Может кто-нибудь мне помочь, пожалуйста?

+1

@DavidHeffernan кошка может съесть печенье, печенье не может съесть кошку , – Maroun

+0

@SuvP В крайних случаях печенье может прийти к кошке. – Maroun

+0

@SuvP Вы знаете, что общего между ними? – Maroun

ответ

13

Предполагая, что вы имеете в виду std::string, string - стандартный класс библиотеки, моделирующий строку.

char * - это всего лишь указатель на один символ. В C и C++ существуют различные функции, которые будут принимать указатель на один символ в качестве параметра и будут отслеживать по памяти до достижения значения 0 памяти (часто называемого нулевым терминатором ). Таким образом, он моделирует строку символов; strlen - пример функции (из стандартной библиотеки C), которая делает это.

Если у вас есть выбор, используйте std::string, так как вам не нужно беспокоиться о памяти.

3

char* является указателем на примитивный тип: char

string является первым объектом класса из стандартной библиотеки шаблонов, которые оборачивает много функциональных возможностей (например, конкатенации двух строк) и делает его легче работать.

2 очень разные сущности!

0

Его простой, 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() вызывается для получения размера ул.

0

char* также может быть указателем на 0 (первое) место массива символов. Он часто использовался в C, где использование String не поддерживается.

+0

, если вы объявите char указателем на массив символов, тогда ваш ответ будет прав, но здесь его еще что-то еще, его единственный символ – 0decimal0

+0

, даже будучи одним символом, это массив с одной ячейкой. * a относится к его значению, а & a относится к его адресу в памяти. – brbtsl

+0

Я не понимаю, к какому массиву вы обращаетесь, «логический» или «физический». – 0decimal0

0

Если вы беспокоитесь о функциональности, string является Функционалchar* i.е вам не нужно беспокоиться о space

символ *

декларация/инициализации: char* str = "Use";

Добавление данных: XXX

длина нахождения: strlen(str); // необходимо включить <string.h> или создать свой собственный

строка

декларация/инициализации: string str = "Use";

Добавление данных: str += " This!"

длина нахождения: str.length() // все в один файл заголовка

Смежные вопросы