На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
! Правила раздела *nix / gcc / Eclipse / Qt / wxWidgets / GTK+
  • При создании темы ОБЯЗАТЕЛЬНО указывайте версию тулкита / библиотеки / компилятора.
  • Перед тем как задать вопрос, сформулируйте его правильно, чтобы вас могли понять.
  • Нарушение Правил может повлечь наказание со стороны модераторов.


Полезные ссылки:
user posted image Boost по-русски
user posted image Qt по-русски
Модераторы: archimed7592
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Билиотека для разбора строк , есть ли такая? Где найти?
    Здравствуйте, Господа!
    Подскажите, пожалуйста, есть ли библиотека (если есть, то где взять) для обработки строк в C под nix. Что нибудь типа парсера, так же не помешают перекодеры из одной раскладки в другю (типа: win1251 в KOI-8 и обратно).
    Если нечто подобное есть в стандартном комплекте, то не слишком пинайте ногами, абы C под nix я только осваиваю)
      Цитата HighMan @
      не помешают перекодеры из одной раскладки в другю (типа: win1251 в KOI-8 и обратно).

      libiconv
      Цитата HighMan @
      Подскажите, пожалуйста, есть ли библиотека (если есть, то где взять) для обработки строк в C под nix.

      А что требуется? Если нужен синтаксический анализ, то можно пользоваться flex/bison (или lex/yacc).
        есть еще strtok :)
          Если использовать библиотеку Qt, то в ней есть такие классы как QString и QTextCodec:
          Меняется примерно так:
          ExpandedWrap disabled
            QTextCodec *pOldCodec = QTextCodec::codecForCStrings();
            QString szText = query.value( n).toString(); // Получаем строку в UTF-8
                                
            pCodec = QTextCodec::codecForName( "windows-1251");
            QTextCodec::setCodecForCStrings( pCodec);
             
            pCodec = QTextCodec::codecForName( "KOI8-R");
            QTextCodec::setCodecForCStrings( pCodec);
             
            pCodec = QTextCodec::codecForName( "UTF-8");
            QTextCodec::setCodecForCStrings( pCodec);
          Qt, не ограничивается только данными кодировками.

          Но ИМХО, не стоит Qt использовать только ради подобной конвертации. :)
            такс... Инфы прибыло! Меня заинтересовала Qt, Вы не могли бы рассказать о возможностях, дать линк на инфу и где это натыбать)
            Заранее благодарен!
              Можно почитать обсуждение здесь: Qt vs. .NET

              Qt демонстрация
              Qt Reference Documentation (Open Source Edition)
                Такс.. К сожалению с самого начала я не уточнил, что писанина будет только под консоль.
                Возник еще вопрос: как использовать нечто, напоминающие DLL для Виндовс? Просто есть определенный код, который будет использовать много мелких программок (cgi), мне кажется, что лучше чем статически линковать один и тот же код к множеству ЦГИшек, оформить его, как некий DLL.
                Возможен и еще вариант: ЦГИшка вызывает некий выполняемый файл, передает в него данные для обработки (в этом варианте очень здорово бы между програмками организовать кусочек разделяемой памяти), вторая програмка эти данные обрабатывает и возвращает вызвавшей программе.
                Посоветуйте, плз, в какую сторону смотреть и стоит ли с подобным, вообще, связываться?
                  С консолью работает также нормально, насколько мне известно также можно грузить либы как статически, так и динамически, правда я пока это не использовал. Поэтому не могу сказать, все прелести и наоборот, но если отталкиваться от реализации того, что я использовал, то думаю, что проблем не должно быть. :)

                  p.s. завтра если будет время, попробую разобраться и обьяснить, как пользоваться библиотеками... ;)
                    Qt4 либа стала распределённой, для работы с QString достаточно подключить QtCore модуль, в Qt4
                    Цитата HighMan @
                    оформить его, как некий DLL.

                    есть определенный класс для работы с плагинами QPluginLoader <QtCore> вот примеры: http://doc.trolltech.com/qtopia4.2/tools-plugandpaint.html
                    http://prog.org.ru/forum/index.php/topic,4120.0.html
                      HighMan, ещё есть ICU, но мне, к сожалению, ни разу не удалось его успешно собрать.
                        boost::regex
                        pcre
                          Цитата Adil @
                          boost::regex

                          Настоятельно не рекомендую. У меня в проекте эта штуковина рандомно заваливается.

                          Также в состав glibc входят довольно неплохие регэкспы (#include <regex.h>), прочитать о которых можно в прилагающейся к glibc документации.
                            Цитата linuxfan @
                            Настоятельно не рекомендую. У меня в проекте эта штуковина рандомно заваливается.

                            А может не в бусте вовсе дело? ;)
                              Цитата archimed7592 @
                              А может не в бусте вовсе дело? ;)

                              ExpandedWrap disabled
                                #0  boost::object_cache<boost::re_detail::cpp_regex_traits_base<char>, boost::re_detail::cpp_regex_traits_implementation<char> >::do_get (k=@0xb580f870, max_cache_size=5)
                                    at /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../../include/c++/4.1.1/bits/stl_list.h:141
                                141             _M_node = _M_node->_M_next;
                                (gdb) bt
                                #0  boost::object_cache<boost::re_detail::cpp_regex_traits_base<char>, boost::re_detail::cpp_regex_traits_implementation<char> >::do_get (k=@0xb580f870, max_cache_size=5)
                                    at /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../../include/c++/4.1.1/bits/stl_list.h:141
                                #1  0x08310b6b in boost::object_cache<boost::re_detail::cpp_regex_traits_base<char>, boost::re_detail::cpp_regex_traits_implementation<char> >::get (k=@0xb580f870, max_cache_size=5)
                                    at /usr/local/include/boost-1_33_1/boost/regex/pending/object_cache.hpp:69
                                #2  0x00b72e4c in boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign ()
                                   from /usr/local/lib/libboost_regex-gcc-mt-1_33_1.so.1.33.1
                                #3  0x08301587 in symbol (this=0xb580fda8, str=@0xb580fdc0)
                                    at /usr/local/include/boost-1_33_1/boost/regex/v4/basic_regex.hpp:254

                              Практика показывает, что все-таки в бусте ;)
                              О бустовом pool_allocator'е вообще молчу...
                                Знаешь, так можно и на тривиальную ф-цию пенять передавая ей нулевой указатель:
                                ExpandedWrap disabled
                                  template< class T >
                                  T set(T *x, T newValue)
                                  {
                                      T oldValue = *x;
                                      *x = newValue;
                                      return oldValue;
                                  }
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0524 ]   [ 16 queries used ]   [ Generated: 10.05.24, 15:17 GMT ]