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

Проблема с указателем на строку - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ создать систему имитационного моделирования http://www.cyberforum.ru/cpp-beginners/thread575112.html
движение физического объекта под действием силы тяжести, не бесплатно конечно, за условиями в личку
C++ Строки на С++ /* Задание 1 Напишите программу с меню, которая конвертирует заданную строку любой длины, как показано ниже: a) В ВЕРХНЕМ РЕГИСТРЕ b) в нижнем регистре c) С Заглавной Буквы(каждое слово) d) с пРОПИСНОЙ пЕРВОЙ бУКВЫ e) С заглавной буквы(как предложение) f) Выход из программы http://www.cyberforum.ru/cpp-beginners/thread575107.html
Ошибка при компиляции: "List index out of bounds (0)" C++
При компиляции выдается следующее сообщение. Среда:C++ Bulder 6 void __fastcall TForm1::FormCreate(TObject *Sender) { GIS->Open(GisSamplesDataDir()+"map2.ttkgp",false) ; } //---------------------------------------------------------------------------
C++ коды символов
Реализую алгоритм шифрования RSA, получаю код символа привидением к int, т.е. у английской A код 65, а у русской А -64, потому что в ASCII только 255 символов, но мне для реализации нужны только положительные коды, просто, когда я на Java делал реализацию RSA, у русской А код был 1040... подскажите, что сделать чтобы получать коды только unsigned int? может код в UTF можно как то получить?
C++ обработка файлов http://www.cyberforum.ru/cpp-beginners/thread575080.html
дан текстовый файл. получить строку, в которой минимальное число слов.
C++ Button создает: combobox, textbox Собственно, есть 2 кнопки. Одна кнопка должна добавлять меню, другая - удалять последнее созданное. Изображение Вот при нажимании на +, создается еще 1 строка: icon, menu name, action. Ну и, соответственно, combobox, textbox. Как это сделать? Забыл сказать, что следующие строки распологаться должны вниз. И еще 1 вопрос. Изображение Как примерно сделать так? Добавлено через 3 часа 41 минуту... подробнее

Показать сообщение отдельно
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
15.05.2012, 22:41     Проблема с указателем на строку
Цитата Сообщение от Sweet_Sleep Посмотреть сообщение
Мм, поясните пожалуйста) Добавлении/удалении.. Попробовала добавить несколько символов, все в порядке.
У Вас есть некая строка, допустим Вы ее инициализировали в конструкторе при создании объекта.
Конструктор примерно должен выглядеть так:
C++
1
2
3
4
String::String( const char *str )
   : stringLength( strlen( str )), FirstSymbol( new char [ stringLength + 1 ]) {
      strcpy( FirstSymbol, str );
}
Само создание объекта:
C++
1
String someString( "This is string" );
Очевидно, что мы выделили память лишь под "This is string". Если вы хотите добавить какой то новый символ в конец строки или присоединить другую строку, то, опять же, очевидно, что нужно выделить память для нового символа/присоединяемой строки. Все примерно выглядит так:
C++
1
2
3
4
char *temp = FirstSymbol; //Создаем в перегружаемом операторе временный указатель и присваиваем ему значение указателя нашей строки
stringLength + strlen( addString ); // увеличиваем переменную содержащую размер нашей строки на 1 если это символ или на strlen( addString ) если присоединяем строку.
FirstSymbol = new char [ stringLength + 1 ]; //выделяем новую память размер которой равен размеру предыдущей строке + размер символа/присоединяемой строки
strcpy( FirstSymbol, temp ); //копируем исходную строку в новый массив
если нам нужно присоединить лишь символ
C++
1
2
*( FirstSymbol + stringLength - 1 ) = addSymbol;
*( FirstSymbol + stringLength ) = '\0';
если же нужно добавить строку
C++
1
strcpy( FirstSymbol + strlen( temp ), addString ); //FirstSymbol + strlen( temp ) тут служит указателем на конец старой строки в только что выделенной памяти.
Теперь осталось освободить память, которую мы выделяли на исходную строку
C++
1
delete [] temp; //освобождаем память, которая была выделена для старой строки
 
Текущее время: 00:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru