Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Не работает функция, которая делит строку по разделителю
|
|||
|---|---|---|---|
|
#18+
Функция разделяет строку string str на части, каждая часть ограничена разделителем string razdelitel, результат записывается в массив result_mass[200] 1) она не работает если разделитель не писать текстом "1234", а передавать через переменную то есть если массив razdelitel_ch заменить на "1234" (то есть записать текстом), то все работает, а мой пример нет 2) даже если писать разделитель текстом, то функция работает с ошибкой, она разделяет строку даже когда встретит какой то один символ из тех что входят в разделитель, а нужно делить только когда встречаются все символы которые входят в разделитель. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 17:36 |
|
||
|
Не работает функция, которая делит строку по разделителю
|
|||
|---|---|---|---|
|
#18+
void explode(string str, string razdelitel, string result_mass[200]){ Должно быть Код: plaintext 1. или Код: plaintext 1. for (i=0; i<sizeof(result_mass); i++){result_mass[i]="";} Эта инициализация не нужна. Изначально массив и так будет заполнен пустыми строками. char buff[65535]; char razdelitel_ch[5]; Это всё не нужно. char * p = strtok(buff,razdelitel_ch); //разбитие на лексемы cplusplus.com<cstring> function strtok char * strtok ( char * str, const char * delimiters ); Split string into tokens A sequence of calls to this function split str into tokens, which are sequences of contiguous characters separated by any of the characters that are part of delimiters . У тебя же видимо постановка задачи другая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 17:47 |
|
||
|
Не работает функция, которая делит строку по разделителю
|
|||
|---|---|---|---|
|
#18+
MasterZiv, for (i=0; i<sizeof(result_mass); i++){result_mass[i]="";} нужен когда функция вызывается в цикле и массив не обнуляется, но это не так важно, главное что сама функция работает не так Первый пункт уже не актуален, Код: plaintext 1. вот так все работает Но почему то если встречается символ который входит в разделитель все делится неправильно. Может надо использовать другую функцию не strtok() ? подскажите какую и как. Написал уже другую функцию где прохожу весь массив char который нужно разделить просто в цикле for, но способ работает очень медленно Код: 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. Помогите или исправить первую функцию explode или оптимизировать вторую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 20:17 |
|
||
|
Не работает функция, которая делит строку по разделителю
|
|||
|---|---|---|---|
|
#18+
trom, не мешай в кучу С строковые функции и std::string ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 22:09 |
|
||
|
Не работает функция, которая делит строку по разделителю
|
|||
|---|---|---|---|
|
#18+
Изопропил, входные данные должны быть только на string, как тогда сделать что использовать подскажите ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 22:32 |
|
||
|
Не работает функция, которая делит строку по разделителю
|
|||
|---|---|---|---|
|
#18+
tromИзопропил, входные данные должны быть только на string, как тогда сделать что использовать подскажите ? ну так и внутри используйте методы std::string std::string::find например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 22:46 |
|
||
|
Не работает функция, которая делит строку по разделителю
|
|||
|---|---|---|---|
|
#18+
Изопропил, std::string::find возвращает первую позицию искомого значения. А дальше как искать до конца строки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2014, 23:13 |
|
||
|
Не работает функция, которая делит строку по разделителю
|
|||
|---|---|---|---|
|
#18+
tromвозвращает первую позицию искомого значения. А дальше как искать до конца строки? прибавить длину искомой строки и искать с позиции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 00:23 |
|
||
|
Не работает функция, которая делит строку по разделителю
|
|||
|---|---|---|---|
|
#18+
Изопропилtrom, не мешай в кучу С строковые функции и std::string это как раз не страшно, если правильно делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 12:00 |
|
||
|
Не работает функция, которая делит строку по разделителю
|
|||
|---|---|---|---|
|
#18+
trom, я в итоге не понял в чем проблема у тебя. тебе надо строку разбивать по одному из символов из строки с руководителями, или только по целой строке? что является разделителем, вся строка, или символы в ней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2014, 12:04 |
|
||
|
Не работает функция, которая делит строку по разделителю
|
|||
|---|---|---|---|
|
#18+
MasterZiv, вот сам разобрался просто аналог expolode как в php нужен был Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2014, 23:27 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38528842&tid=2019759]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
88ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 184ms |

| 0 / 0 |
