| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > трабла с ctrlen |
| Автор: pycha 18.7.2008, 13:43 | ||||||
| драсте. Тут есть проблема : вот обьявил функцию , которая должна обьеденять две строки в одну. Одна передаваемая *сhar а вторая масив из класа. Когда к strlen предаю строку *сhar то почемуто возвращается неопределенное число. обьвил в класе так:
вот сама функция:
функцию вызываю так:
что тут не так? |
| Автор: JackYF 18.7.2008, 14:21 |
| pycha, 1) ты не имеешь права возвращать ссылку на временных объект, эта функция должна возвращать "String" 2) в отладчике смотрел? до или после выполнения оператора? в любом случае исправь 1), перекомпилируй и проверь, работает ли теперь |
| Автор: pycha 18.7.2008, 15:43 |
| Просмотрел еще раз и увидел что неправильно понял ошибку. 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 да смотрел под отладчиком |
| Автор: bsa 18.7.2008, 16:05 |
| очень рекомендую почитать умные книжки по С++. В частности Мейерса и Александреску. А для начала посмотри, как устроен стандартный класс http://www.sgi.com/tech/stl/basic_string.html |
| Автор: pycha 18.7.2008, 16:09 |
| отредактировал предыдущее сообщение используя метод проб и ошибок понял что тут for (int i = 0, le... le использовать не надо было. Но возникла другая проблема temp.str[le]=st2.str[i] почемуто не обьеденяет строки(почемуто не копирует символы) |
| Автор: JackYF 18.7.2008, 17:50 |
Потому что это присваивание символов, не больше и не меньше. То, что ты хочешь, делает strcpy, если я правильно понял. Всё же проштудировать справочникам по функциям языка Си не помешает. |
| Автор: pycha 18.7.2008, 18:02 |
| Мне нужна не замена а обьединение. Вот например: s2 = "My name is " + s3; В класе s3 находится имя (например "pycha") и в результате действий "My name is " + s3 в классe s2 теперь будет строка "My name is pycha".- вот что мне надо |
| Автор: bsa 18.7.2008, 19:00 |
| pycha, тебе нужна функция strcat |
| Автор: varnie 18.7.2008, 20:56 | ||||
| pycha а вообще, зачем спускаться на Си-уровень работы с строками, если есть std::string, спасающий программиста от кучи проблем? Rififi
может быть
|
| Автор: Rififi 18.7.2008, 21:41 |
совершенно верно, thanx за поправку, проглючило (: |
| Автор: pycha 19.7.2008, 02:36 |
| Да действительно оно! Я учу с ноля С++ только полтора месяца самостоятельно поэтому я еще о многом не знаю |