Re: Строки в C++, начинающий
От: dmitry_npi Россия  
Дата: 17.08.10 09:59
Оценка: 2 (2)
Здравствуйте, Вульфович Филипп, Вы писали:
ВФ>Чем отличается:

ВФ>
ВФ>  char *str = "Hello, world.\n";
ВФ>


ВФ>от


ВФ>
ВФ>  char *str2 = new char[];
ВФ>  strcpy(str2, "Hello, world.");
ВФ>


Второй вариант не скомпилируется. Нужно указать размер, например:

  char *str2 = new char[500];
  strcpy(str2, "Hello, world.");


ВФ>Выделиться одинаковое кол-во памяти?

ВФ>Нужно ли потом освобождать str и str2?

в первом случае память выделится до выполнения программы, и её выделится столько, чтобы уместить строку "Hello, world.\n" и еще завершающий нулевой байт. То есть 15 байт.
Освобождать её не надо. Но и записывать в эту строку ничего нельзя, потому что она — константа.

Длина str2 как массива — 500 байт (или сколько пожелаете). Длина str2 как строки — 14 символов. Эту длину возвратит strlen(str2).
str2 надо освободить с помощью delete:

delete [] str2; // именно так, с пустыми квадратными скобками


В str2 можно менять символы:

str2[13] = '?'; // меняем точку на вопрос
Атмосферная музыка — www.aventuel.net
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.