![]() |
|
Модераторы: bsa |
![]()
|
|
| pycha |
|
||||||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: 1 Всего: 13 |
драсте. Тут есть проблема : вот обьявил функцию , которая должна обьеденять две строки в одну. Одна передаваемая *сhar а вторая масив из класа. Когда к strlen предаю строку *сhar
то почемуто возвращается неопределенное число. обьвил в класе так:
вот сама функция:
функцию вызываю так:
что тут не так? Это сообщение отредактировал(а) pycha - 18.7.2008, 13:48 --------------------
ищу хакера со знанием компьютера длятехкт |
||||||
|
|||||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
pycha,
1) ты не имеешь права возвращать ссылку на временных объект, эта функция должна возвращать "String" 2) в отладчике смотрел? до или после выполнения оператора? в любом случае исправь 1), перекомпилируй и проверь, работает ли теперь |
|||
|
||||
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: 1 Всего: 13 |
Просмотрел еще раз и увидел что неправильно понял ошибку. le значение присваивает правильно(я банально поспотрел значение le до присваивания значения) Это потом в самом цикле ей почемуто опять присваивается такое значение.Исправил (теперь возвращает String а не ссылку). Кстати как использую потом le в цикле выдает предупреждение
g:\documents and settings\pycha.pycha-1366613\мои документы\visual studio 2008\projects\задача 12ю2\задача 12ю2\12.4a.cpp(101) : warning C4700: uninitialized local variable 'le' used да смотрел под отладчиком Это сообщение отредактировал(а) pycha - 18.7.2008, 16:30 --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
очень рекомендую почитать умные книжки по С++. В частности Мейерса и Александреску.
А для начала посмотри, как устроен стандартный класс basic_string |
|||
|
||||
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: 1 Всего: 13 |
отредактировал предыдущее сообщение
используя метод проб и ошибок понял что тут for (int i = 0, le... le использовать не надо было. Но возникла другая проблема temp.str[le]=st2.str[i] почемуто не обьеденяет строки(почемуто не копирует символы) Это сообщение отредактировал(а) pycha - 18.7.2008, 17:03 --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
Потому что это присваивание символов, не больше и не меньше. То, что ты хочешь, делает strcpy, если я правильно понял. Всё же проштудировать справочникам по функциям языка Си не помешает. |
|||
|
||||
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: 1 Всего: 13 |
Мне нужна не замена а обьединение. Вот например:
s2 = "My name is " + s3; В класе s3 находится имя (например "pycha") и в результате действий "My name is " + s3 в классe s2 теперь будет строка "My name is pycha".- вот что мне надо --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
pycha, тебе нужна функция strcat
|
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 3 Всего: 36 |
в общем случае действовать надо так: 1. узнать результирующее количество символов (не забывая про завершающий нуль-терминатор) size_t len = strl1n(s1) + strlen(s2) + 1; 2. выделить память под объединённую строку char* s = new char[len]; 3. слить строки в одну strcpy(s, s1) strcat(s, s2); 4. удалить старую строку в классе и заменить на новую delete [] m_str[]; m_str = s; 5. вернуть объект (предполагается, что имеется соответствующий конструктор) return *this; Это сообщение отредактировал(а) Rififi - 18.7.2008, 19:44 |
|||
|
||||
| varnie |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 27.9.2007 Репутация: нет Всего: 0 |
||||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 3 Всего: 36 |
||||
|
||||
| pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: 1 Всего: 13 |
Да действительно оно! Я учу с ноля С++ только полтора месяца самостоятельно поэтому я еще о многом не знаю
--------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |