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

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

Войти
Регистрация
Восстановить пароль
 
Aндерсон_256
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 16
#1

Конкатенация строк в объектах - C++

13.01.2014, 21:56. Просмотров 249. Ответов 3
Метки нет (Все метки)

Программа завершает свою работу в тот момент, когда выполняет нижеприведенный фрагмент кода. Вывода на экран не происходит. Вкратце условия задачи:
Класс String состоит из указателя на строку char*str в private и нескольких функций в public, но вопрос мой касается лишь одной из них.
Определение функции:
C++
1
2
3
4
5
6
7
8
9
10
11
String String::operator+(const String&v)
{
char*temp=new char[strlen(str+1)]; // создаем временный указатель
strcpy(temp,str);
delete [] str;
str = new char [strlen(str)+strlen(v.str+1)];
strcpy(str,temp);
strcat(str,v.str);
delete[]temp;
return *this;
}
код в main() :
C++
1
2
3
4
  String s1(" My name is Mike ");
    String s2 = " and I am a C++ student. ";
    s1=s1+s2;
    cout << s1;
С перегруженным оператором вывода << все в порядке, в других частях кода работает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2014, 21:56     Конкатенация строк в объектах
Посмотрите здесь:

Копирование строк в объектах - C++
В методе DeleteMessage() я хочу удалить сообщение путём копирования в него строк из следующего сообщения,ну то есть сдвигая всё это,не...

Конкатенация строк - C++
Имеется две строки string1 и string2, мне нужно что бы строка string3 содержала в себе обе, сначало string1, потом string2. Kак это сделать...

Конкатенация строк - C++
Помогите,пожалуйста,идиоту.Не понимаю как правильно конкатенацию строк написать(&quot;сложение&quot; строк) #include &lt;iostream&gt; class...

конкатенация строк - C++
Доброго времени суток! есть следующий код, который читает файл: char line; string str = &quot;&quot;; ifstream...

конкатенация строк - C++
Подскажите, почему не компилируется код: std::string ExtractFileName(std::string filename) { if (filename.size() == 0)...

Конкатенация строк - C++
Здравствуйте. Имеется функция - Concat(s1,s2). Назначение - конкатенация строк s1 и s2 (конкатенцаия - это операция склеивания объектов...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
13.01.2014, 21:59     Конкатенация строк в объектах #2
C++
1
2
3
4
5
delete [] str;//<--освободили память
str = new char [
                        strlen(str)//Память уже освобождена и там может быть что угодно
                        +strlen(v.str+1)
                      ];
Aндерсон_256
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 16
13.01.2014, 22:18  [ТС]     Конкатенация строк в объектах #3
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
3
4
5
delete [] str;//<--освободили память
str = new char [
                        strlen(str)//Память уже освобождена и там может быть что угодно
                        +strlen(v.str+1)
                      ];
Простите, но я вас не понял. Я полагаю, что освобождая память операцией delete [] str, я тем самым удаляю данные из памяти, на которые указывал str. В моем случае для того, чтобы "склеить" строки из объектов s1 и s2 в s1, нужно в первую очередь поместить в временное хранилище копию строки, на которую указывает указатель вызывающей функции, а уж затем подчищать память. Подправьте, пожалуйста, в моментах, в которых я ошибаюсь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2014, 22:43     Конкатенация строк в объектах
Еще ссылки по теме:

Конкатенация строк - C++
Написать программу, которая делает сложение унарных чисел. Я написал программу, она даже правильно считает, но как мне потом сказали,...

Конкатенация строк - C++
struct Polya //struct for baza questions { WCHAR Question, var1, var2, var3, var4; WCHAR Answer; }; Polya *Quest = new...

Конкатенация строк - C++
Нужно объединить три строки: &quot;txt/&quot; + i + &quot;.txt&quot; в char* URL. i переменная в цикле. Сделал так: strcpy(URL, &quot;txt/\0&quot;); ...

Конкатенация строк - C++
Здраствуйте. Проблема в следующем: (строка 57) нужно прибавить элемент массива типа string к переменной типа string, но при запуске...

Конкатенация строк s1 и s2 - C++
Есть код консольного приложения. В конце когда ответ, какието символы. Где же что не так?? #include &quot;stdafx.h&quot; #include...

Конкатенация строк - C++
Должно быть консольное приложение. Очень простой вопрос, но сам что-то завис, и немогу найти что хочу. Значит так есть такой кусок кода ...


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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 1
13.01.2014, 22:43     Конкатенация строк в объектах #4
Цитата Сообщение от Aндерсон_256 Посмотреть сообщение
я тем самым удаляю данные из памяти, на которые указывал str.
лишь указываете, что ранее выделенная память более не нужна.
C++
1
2
3
4
5
6
char * temp=new char[strlen(str)+strlen(v.str)+1)]; // создаем временный указатель
strcpy(temp,str);
strcat(temp,v.str);
delete [] str;
str=temp;
return *this;
Yandex
Объявления
13.01.2014, 22:43     Конкатенация строк в объектах
Ответ Создать тему
Опции темы

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