Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
#1

Как динамически иницилизировать char * "статическими" данными? - C++

31.08.2012, 03:56. Просмотров 339. Ответов 5
Метки нет (Все метки)

Можно с применением стандарта C++11, если что.
Есть конструктор, который принимает параметр в виде char * и копирует его во внутреннее поле, но может в процессе работы урезать строку, но никак не расширять
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Dummy
{
public:
   char * str;
   Dummy(const char *simplStr)
   {
      if (simplStr == nullptr)
      {
         str = "my default str";
      }
   }
   ~Dummy()
   {
      if (str)
         delete str;
   }
};
Вопрос, как сделать так, чтобы память под str в строке 9 выделялась бы динамически?(чтобы деструктор работал корректно) Есть ли какие-нибудь способы, кроме обьявлении статической const char * строки-> выделении памяти под str, так чтобы вместилась статическая строка->копирование статической строки в str. Просто вышеназванныё способ мне кажется некрасивым
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2012, 03:56     Как динамически иницилизировать char * "статическими" данными?
Посмотрите здесь:

error C2664: strcmp: невозможно преобразовать параметр 1 из "char (*)[20]" в "const char *" - C++
for(int i = 0; i< 5; i++) { wr_struc (list); if (strcmp(&list.Sostav,osn_sostav)==0 && strcmp(&list.MestoVkomande,attack)==0...

Аргумент типа "unsigned char*" несовместим с параметром типа "const char*" - C++
int f(unsigned char s, unsigned char q) { N = strlen(s); //Ошибка тут... M = strlen(q); //...и тут Как исправить?

invalid conversion from "const char*" to "char" - C++
Помогите, пожалуйста, найти проблему. Arguments.h #include<iostream> class Arguments { public: Arguments(int iArgc,...

Невозможно преобразовать "const char" в "char" - C++
Вот код: void vvod() { char name_of_file; int i; char linetype1; char linetype2; int razmer_pera; struct colour {

Как избавиться от "deprecated conversion from string constant to ‘char*’" - C++
Здравствуйте. У меня компилятор пишет: _.cpp:15: warning: deprecated conversion from string constant to ‘char*’ _.cpp:16:...

char *p; p="Help"; cout << p[0]; А как вывести адрес? - C++
#include &lt;iostream&gt; #include &lt;new&gt; using std::cout; using std::cin; using std::endl; int bufer; int...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
31.08.2012, 04:13     Как динамически иницилизировать char * "статическими" данными? #2
C
1
str = strdup("my default str");
?
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
31.08.2012, 04:23  [ТС]     Как динамически иницилизировать char * "статическими" данными? #3
Спасибо, судя по описанию то что нужно
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.08.2012, 11:05     Как динамически иницилизировать char * "статическими" данными? #4
strdup требует вызова free, а не delete
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
31.08.2012, 13:11     Как динамически иницилизировать char * "статическими" данными? #5
C++
1
2
3
4
5
6
7
8
9
10
Dummy(const char *simplStr = "my default str" )
   : str( new char [ std::strlen( simplStr ) + 1 ])
{
   std::strcpy( str, simplStr );
}
~Dummy()
{
   //if (str) - проверка не нужна, так как это все равно делает оператор delete
   delete [] str;
}
Добавлено через 45 минут
Цитата Сообщение от Toshkarik Посмотреть сообщение
Jupiter; Сегодня в 12:46. Причина: use delete [], Luke

Не по теме:

Извиняюсь, тупо скопипастил, и не обратил внимание

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2012, 13:16     Как динамически иницилизировать char * "статическими" данными?
Еще ссылки по теме:

Ошибка: argument of type "char *" is incompatible with parameter of type "LPCWSTR" - C++
Помогите, пожалуйста, исправить ошибку в программе. #include &lt;iostream&gt; #include &quot;stdio.h&quot; #include &quot;windows.h&quot; #include &lt;conio.h&gt; ...

Невозможно преобразовать параметр 1 из "const wchar_t [12]" в "const char *" - C++
Писал программу. Дошел до наложения текстур. Пытаюсь наложить 4-й час. Много разных ошибок. Все ошибки гуглил. На данный момент ошибка...

Аргумент типа "char *" несовместим с параметром типа "LPCWSTR" - C++
Что такое и с чем его едят 1 IntelliSense: аргумент типа &quot;char *&quot; несовместим с параметром типа...

"const char" в "int" - C++
Всем привет, я новенький тут и сразу возник вопрос Делал все по видео уроку но ошибка все же появилась. #include &lt;iostream&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
31.08.2012, 13:16     Как динамически иницилизировать char * "статическими" данными? #6
а это обязательно нужно ручками делать? использование string напрашивается.
Yandex
Объявления
31.08.2012, 13:16     Как динамически иницилизировать char * "статическими" данными?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru