|
|
|
Как грамотно оформить замены символов в char[]
|
|||
|---|---|---|---|
|
#18+
Добрый день, дорогие коллеги. Есть буфер борюсь с функцией замены в строке char. Пишу сам, аналогов не знаю, алгоритмов не нашел, если есть у кого то полезные линки, буду очень признателен. И так, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. Разумееться есть ошибки, проявляються во время работы второго replace. Правильно ли я делаю: Если в кратце, то функция replace занимается тем что принимает указатель на буфер строки, после чего она разбивает ее на две части, для обоих выделяет память, в первую часть заносит все что до "искомой" подстроки, а во вторую то что после нее. Далее создает новый буфер, большей длины, и копирует туда сначала начало (Head), потом подсроку, на которую мы заменяем искомую, а после и хвост(Tail). И возвращает указатель на новую строку вызывающей функции main(); Явно, что с этит дополнительными буферами я что то намудрил, знающие люди подскажите правильный путь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 13:55 |
|
||
|
Как грамотно оформить замены символов в char[]
|
|||
|---|---|---|---|
|
#18+
В наше время работать с функциями из string.h - это экстрим. Чем плоха библиотека STL и класс string? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 14:00 |
|
||
|
Как грамотно оформить замены символов в char[]
|
|||
|---|---|---|---|
|
#18+
Не умею STL =) Проблема кстати решилась, добавил байт при выделении ного буфера под конец строки, и все свершилось вроде как. Критика разумееться уместа. И примеры из STL тоже. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 14:12 |
|
||
|
Как грамотно оформить замены символов в char[]
|
|||
|---|---|---|---|
|
#18+
DжеFFКритика разумееться уместа. 1. find лучше бы возвращала NULL при ошибке, и в, функции ее вызывающей, делать проверку на NULL. 2. вообще, вместо find можно использовать strstr 3. Зачем выделять 2 буфера с начала, если уже все данные для длины результирующей строки известны? 4. Удаление и создание буферов желательно делать в одной функции. С точки зрения правельной структуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 14:29 |
|
||
|
Как грамотно оформить замены символов в char[]
|
|||
|---|---|---|---|
|
#18+
Если find возврашает NULL, то толковаться это может как 0, у меня она возвращает индекс первого элекмента найденного слова. На счет выделения в одной функции, не понимаю как это можно сделать... Да и какой смысл? На счет strstr надо покумекать, никогда ее не юзал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 14:40 |
|
||
|
Как грамотно оформить замены символов в char[]
|
|||
|---|---|---|---|
|
#18+
DжеFFЕсли find возврашает NULL, то толковаться это может как 0, у меня она возвращает индекс первого элекмента найденного слова. На счет выделения в одной функции, не понимаю как это можно сделать... Да и какой смысл? На счет strstr надо покумекать, никогда ее не юзал. А ну да. Не обратил внимания. Думал, что у тебя указатель возвращается. Как сделать? Выделил память, отдал в replace, не нужна потом удалил. А для результата в replace тоже передал блок памяти. А смысел в том, что у тебя не грамотная структура, будешь все время заморачиваться, что где выделилось, что где удалилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 14:59 |
|
||
|
Как грамотно оформить замены символов в char[]
|
|||
|---|---|---|---|
|
#18+
автор DжеFF И примеры из STL тоже. =) Попробую скромно внести свои 5 копеек. Вот так пойдет? :) Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2006, 15:14 |
|
||
|
Как грамотно оформить замены символов в char[]
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2006, 03:04 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34069770&tid=2030226]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
418ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 700ms |

| 0 / 0 |
