Название: strtok и много ,,,,,, Отправлено: _Vitaliy_ от Декабрь 05, 2015, 14:50 Почти литературный пример но все же.
Имеем текстовый файл (пример строки): 0.0117,,,,,,,42,,,0,,,, (15 числомест) Нужно заполнить строку в таблице данными из предоставленной строки по условию: если есть число то заносим число, если "пустышка" то заносим "-" strtok в моем коде игнорирует "пустышки" поэтому данные заполняются неверно.... привожу псевдокод (f - строка из файла): Код: char *ptr; в итоге есть только 3 значения... Как это победить? Название: Re: strtok и много ,,,,,, Отправлено: Igors от Декабрь 05, 2015, 15:44 Такие задачки не так уж просты если добросовестно проверять все ошибки. Напр какой рез-т ожидается для
Цитировать 0.17, 6 , 4 3 , , - ?Если "говнокодить комфортно", то проще всего QString::split (сначала разбить на строки) Название: Re: strtok и много ,,,,,, Отправлено: m_ax от Декабрь 05, 2015, 16:03 Цитировать в итоге есть только 3 значения... Как это победить? Посмотрите на boost::tokenizer или boost::spirit Название: Re: strtok и много ,,,,,, Отправлено: Fat-Zer от Декабрь 05, 2015, 19:57 всё правильно, strtok всегда возвращает непустые строки... вероятно, изначально он придумывался для парсинга unix-путей, чтобы отсеивать лишние слеши идущие подряд...
тут или бздяшная strsep, или её ручное исполнение на основе strpbrk... Название: Re: strtok и много ,,,,,, Отправлено: _Bers от Декабрь 30, 2015, 01:26 в итоге есть только 3 значения... Как это победить? использовать моральный токенайзер. например: http://rextester.com/LUPYB81538 Код: #include <iostream> Название: Re: strtok и много ,,,,,, Отправлено: Igors от Январь 06, 2016, 13:33 использовать моральный токенайзер. Что значит (а)"моральный"? И вообще Ваш код меня удивил. Это ж велосипед! А ведь есть готовые решения которые делали умные люди!Посмотрите на boost::tokenizer или boost::spirit Вот к чему надо стремиться! А Вы, значит, тот самый "неосилятор" :) :) Название: Re: strtok и много ,,,,,, Отправлено: _Bers от Январь 19, 2016, 19:51 использовать моральный токенайзер. Что значит (а)"моральный"? И вообще Ваш код меня удивил. Это ж велосипед! А ведь есть готовые решения которые делали умные люди!Посмотрите на boost::tokenizer или boost::spirit Вот к чему надо стремиться! А Вы, значит, тот самый "неосилятор" :) :) моральный, значит цивилизованный и воспитанный. код - сэмпл. кусок годного кода, который можно точить под себя. у меня целая гора всяких разных семплов. часто я не пишу код с нуля, а использую готовые наработки. (в частности, у меня есть целая коллекция сэплов, иллюстрирующих работу с boost) что касается буста - иногда проще скопипастить за минуту сэмпл из нескольких простейших строк кода, нежели 4 часа устанавливать буст на машину. по поводу стремлений, я практикую технику программирования через страдание: суть простая: если отсутствие некоторой технологии не причиняет боль и страдание, значит эта технология не нужна. по поводу осиляторства: слово "значит" обозначает "вывод". мне не очевидно, на каких основаниях вы сделали вывод по поводу моего неосилярства. так же не очевидно, какой "такой". Название: Re: strtok и много ,,,,,, Отправлено: Bepec от Январь 19, 2016, 22:24 Хых не ведитесь на его поведение. Это он специально от избытка вредности и прилива антивелосипедности :D
Название: Re: strtok и много ,,,,,, Отправлено: Igors от Январь 20, 2016, 12:13 я практикую технику программирования через страдание: Ах как Вы хорошо говорите! (иногда). Но как же с пресловутой "общностью"? Что если вместо std::string понадобится напр QString (или что-то еще)? суть простая: если отсутствие некоторой технологии не причиняет боль и страдание, значит эта технология не нужна. Название: Re: strtok и много ,,,,,, Отправлено: Bepec от Январь 20, 2016, 12:29 Igors а вы предусмотрели случай перехода на нечисловую систему измерения? :D
PS предусмотреть всё невозможно. перегружать программу "когдатопонадобится" - к печальному концу программы. Название: Re: strtok и много ,,,,,, Отправлено: _Bers от Январь 20, 2016, 19:01 Но как же с пресловутой "общностью"? Что если вместо std::string понадобится напр QString (или что-то еще)? это противоречит идеи семпла: быть простым, и понятным примером-иллюстрацией. Название: Re: strtok и много ,,,,,, Отправлено: Igors от Январь 21, 2016, 04:11 это противоречит идеи семпла: Ага, то есть это так, "просто для примера". А вот если "по-взрослому", профессионально - тогда уж точно буст, верно?быть простым, и понятным примером-иллюстрацией. Название: Re: strtok и много ,,,,,, Отправлено: _Bers от Январь 21, 2016, 09:15 Ага, то есть это так, "просто для примера". А вот если "по-взрослому", профессионально - тогда уж точно буст, верно? не факт. |