Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна замена для std::string, Нужна замена для std::string 
V
    Опции темы
Lazin
Дата 15.6.2008, 20:46 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



почему алгоритм это плохо..? в классе string и так около сотни методов, вам мало? smile 
PM MAIL Skype GTalk   Вверх
Alek86
Дата 16.6.2008, 12:06 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(andrew_121 @  15.6.2008,  19:57 Найти цитируемый пост)
Проще(мне так кажется), все необходимое впихнуть в класс.

отакие вот создали MFC... smile

и, как я понял, в сторону Boost String Algorithms Library ты даже не посмотрел
тогда уж пользуй QString


--------------------
user posted image    user posted image
PM MAIL   Вверх
andrew_121
Дата 16.6.2008, 12:27 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Lazin - гм... Я их там не больше 10-ти насчитал.

Добавлено через 2 минуты и 8 секунд
Alek86 - Именно в сторону Boost String Algorithms я и смотрю.
Но вот незадача, мне нужен класс в одном-двух хедерах, а вот Boost тягать с собой совсем неохота!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Lazin
Дата 16.6.2008, 12:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



andrew_121, конструкторы, операторы и все варианты их перегрузки smile 
PM MAIL Skype GTalk   Вверх
Alek86
Дата 16.6.2008, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(andrew_121 @  16.6.2008,  12:27 Найти цитируемый пост)
мне нужен класс в одном-двух хедерах

зря
таких монстров в 1 хедере хранить - плохая затея

Цитата(andrew_121 @  16.6.2008,  12:27 Найти цитируемый пост)
вот Boost тягать с собой совсем неохота!

у буста есть утилитка, с помощью котрой можно "вытаскивать" из него определенные библиотеки с их зависимостями

Цитата(andrew_121 @  16.6.2008,  12:27 Найти цитируемый пост)
гм... Я их там не больше 10-ти насчитал.

плохо считал, что тут скажешь
только в стандарте их "туева хуча", а в реализациях и поболя


--------------------
user posted image    user posted image
PM MAIL   Вверх
andrew_121
Дата 16.6.2008, 14:43 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Alek86 - Я их насчитал 35.
Но не в этом дело. Все равно, функционал некакущий !!!

Это сообщение отредактировал(а) andrew_121 - 16.6.2008, 14:51


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Mayk
Дата 16.6.2008, 14:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



35? буга.
Чисто для справки перечень ф-ций из драфта.  И это только члены класса std::string'а. Про операторы молчу

21.3 @ c++-draft-nov2006-n2135.txt

Код

           explicit basic_string(const Allocator& a = Allocator());
           basic_string(const basic_string& str );
           basic_string(const basic_string& str , size_type pos , size_type n = npos, const Allocator& a = Allocator());
           basic_string(const charT* s , size_type n , const Allocator& a = Allocator());
           basic_string(const charT* s , const Allocator& a = Allocator());
           basic_string(size_type n , charT c , const Allocator& a = Allocator());
           template<class InputIterator> basic_string(InputIterator begin , InputIterator end ,  const Allocator& a = Allocator());
          ~basic_string();
           basic_string& operator=(const basic_string& str );
           basic_string& operator=(const charT* s );
           basic_string& operator=(charT c );
           iterator               begin();
           const_iterator         begin() const;
           iterator               end();
           const_iterator         end() const;
     reverse_iterator         rbegin();
     const_reverse_iterator   rbegin() const;
     reverse_iterator         rend();
     const_reverse_iterator   rend() const;
     const_iterator           cbegin() const;
     const_iterator           cend() const;
     const_reverse_iterator   crbegin() const;
     const_reverse_iterator   crend() const;
     size_type size() const;
     size_type length() const;
     size_type max_size() const;
     void resize(size_type n , charT c );
     void resize(size_type n );
     size_type capacity() const;
     void reserve(size_type res_arg = 0);
     void clear();
     bool empty() const;
     const_reference operator[](size_type pos ) const;
     reference            operator[](size_type pos );
     const_reference at(size_type n) const;
     reference            at(size_type n);
     basic_string& operator+=(const basic_string& str );
     basic_string& operator+=(const charT* s );
     basic_string& operator+=(charT c );
     basic_string& append(const basic_string& str );
     basic_string& append(const basic_string& str , size_type pos ,                           size_type n );
     basic_string& append(const charT* s , size_type n );
     basic_string& append(const charT* s );
     basic_string& append(size_type n , charT c );
     template<class InputIterator>        basic_string& append(InputIterator first , InputIterator last );
     void push_back(charT c );
     basic_string& assign(const basic_string& str );
     basic_string& assign(const basic_string& str , size_type pos ,                          size_type n );
     basic_string& assign(const charT* s , size_type n );
     basic_string& assign(const charT* s );
     basic_string& assign(size_type n , charT c );
     template<class InputIterator>      basic_string& assign(InputIterator first , InputIterator last );
      basic_string& insert(size_type pos1 , const basic_string& str );
      basic_string& insert(size_type pos1 , const basic_string& str ,                           size_type pos2 , size_type n );
      basic_string& insert(size_type pos , const charT* s , size_type n );
      basic_string& insert(size_type pos , const charT* s );
      basic_string& insert(size_type pos , size_type n , charT c );
      iterator insert(iterator p , charT c );
      void     insert(iterator p , size_type n , charT c );
      template<class InputIterator>        void insert(iterator p , InputIterator first , InputIterator last );
      basic_string& erase(size_type pos = 0, size_type n = npos);
      iterator erase(iterator position );
      iterator erase(iterator first , iterator last );
      basic_string& replace(size_type pos1 , size_type n1 ,                            const basic_string& str );
      basic_string& replace(size_type pos1 , size_type n1 ,                            const basic_string& str ,                            size_type pos2 , size_type n2 );
      basic_string& replace(size_type pos , size_type n1 , const charT* s ,                            size_type n2 );
      basic_string& replace(size_type pos , size_type n1 , const charT* s );
      basic_string& replace(size_type pos , size_type n1 , size_type n2,                            charT c );
      basic_string& replace(iterator i1 , iterator i2 ,                            const basic_string& str );
      basic_string& replace(iterator i1 , iterator i2 , const charT* s ,                            size_type n );
      basic_string& replace(iterator i1 , iterator i2 , const charT* s );
      basic_string& replace(iterator i1 , iterator i2 ,                            size_type n , charT c );
      template<class InputIterator>        basic_string& replace(iterator i1 , iterator i2 ,                              InputIterator j1 , InputIterator j2 );
      size_type copy(charT* s , size_type n , size_type pos = 0) const;
      void swap(basic_string& str );
      const charT* c_str() const;
      const charT* data() const;
      allocator_type get_allocator() const;
      size_type   find   (const   basic_string& str , size_type pos = 0) const;
      size_type   find   (const   charT* s , size_type pos , size_type n ) const;
      size_type   find   (const   charT* s , size_type pos = 0) const;
      size_type   find   (charT   c , size_type pos = 0) const;
      size_type   rfind(const   basic_string& str , size_type pos = npos) const;
      size_type   rfind(const   charT* s , size_type pos , size_type n ) const;
      size_type   rfind(const   charT* s , size_type pos = npos) const;
      size_type   rfind(charT   c , size_type pos = npos) const;
      size_type find_first_of(const basic_string& str ,                              size_type pos = 0) const;
      size_type find_first_of(const charT* s ,                              size_type pos , size_type n ) const;
      size_type find_first_of(const charT* s , size_type pos = 0) const;
      size_type find_first_of(charT c , size_type pos = 0) const;
      size_type find_last_of (const basic_string& str ,                              size_type pos = npos) const;
      size_type find_last_of (const charT* s ,                              size_type pos , size_type n ) const;
      size_type find_last_of (const charT* s , size_type pos = npos) const;
      size_type find_last_of (charT c , size_type pos = npos) const;
      size_type find_first_not_of(const basic_string& str ,                                  size_type pos = 0) const;
      size_type find_first_not_of(const charT* s , size_type pos ,                                  size_type n ) const;
      size_type find_first_not_of(const charT* s , size_type pos = 0) const;
      size_type find_first_not_of(charT c , size_type pos = 0) const;
      size_type find_last_not_of (const basic_string& str ,                                  size_type pos = npos) const;
      size_type find_last_not_of (const charT* s , size_type pos ,                                  size_type n ) const;
      size_type find_last_not_of (const charT* s ,                                  size_type pos = npos) const;
      size_type find_last_not_of (charT c , size_type pos = npos) const;
       basic_string substr(size_type pos = 0, size_type n = npos) const;
       int compare(const basic_string& str ) const;
       int compare(size_type pos1 , size_type n1 ,                   const basic_string& str ) const;
       int compare(size_type pos1 , size_type n1 ,                   const basic_string& str ,                   size_type pos2 , size_type n2 ) const;
       int compare(const charT* s) const;
       int compare(size_type pos1 , size_type n1 ,                   const charT* s ) const;
       int compare(size_type pos1 , size_type n1 ,                   const charT* s , size_type n2 ) const;


Цитата(Lazin @  16.6.2008,  00:46 Найти цитируемый пост)
в классе string и так около сотни методов, вам мало? 

причем около сотни следует читать лишь как "больше сотни".  smile  smile  smile 

Это сообщение отредактировал(а) Mayk - 16.6.2008, 15:00


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Lazin
Дата 16.6.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(andrew_121 @  16.6.2008,  14:43 Найти цитируемый пост)
Но не в этом дело. Все равно, функционал некакущий !!!

а какой нужен функционал?
PM MAIL Skype GTalk   Вверх
andrew_121
Дата 16.6.2008, 15:22 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Mayk - Я имел ввиду, поименно. Ну а если посчитать ВСЕ, то ДА, огого...
Повторюсь: Все равно, функционал некакущий !!!
Не регулярных выражений, ни сдвигов...т.е. МАЛОВАТО !!!
Блин, ну поймите - проект, с приогромнейшим кол-вом строковых операций.

Это сообщение отредактировал(а) andrew_121 - 16.6.2008, 16:26


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Lazin
Дата 16.6.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(andrew_121 @  16.6.2008,  15:22 Найти цитируемый пост)
Не регулярных выражений

ты уж меня извини, но гда ты видел рег. выражения в строковом классе. а если я их в программе не использую? В общем почитай про антипатерн blob.
Пс
есть boost::regex
есть boost::xpression, что то подобное есть в QString? Или в каком нибудь другом строковом классе...

Цитата(andrew_121 @  16.6.2008,  15:22 Найти цитируемый пост)
сдвигов

вставить нужное количество пробелов не судьба?

Цитата(andrew_121 @  16.6.2008,  12:27 Найти цитируемый пост)
Но вот незадача, мне нужен класс в одном-двух хедерах, а вот Boost тягать с собой совсем неохота! 

ну, QString вообще-то не бывает без Qt.. проблема-то в чем? Штука в том, что string и алгоритмы - header only, что очень сильно тебе упрощает задачу, а ты сопротивляешься этому smile
PM MAIL Skype GTalk   Вверх
andrew_121
Дата 16.6.2008, 17:01 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Понял. Нужно писать свой класс. Унаследоваться от std::string, впихнуть в него все что нужно.
Alek86
Цитата(Alek86 @  16.6.2008,  12:40 Найти цитируемый пост)
у буста есть утилитка, с помощью котрой можно "вытаскивать" из него определенные библиотеки с их зависимостями

А чё за зверь? Как звать? И много за собой тянет?

Думал тему закрыть, но нет, Буду сюда писать вопросы по реализации сего класса.

Это сообщение отредактировал(а) andrew_121 - 16.6.2008, 17:04


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
bsa
Дата 16.6.2008, 17:07 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(andrew_121 @ 16.6.2008,  17:01)
Понял. Нужно писать свой класс. Унаследоваться от std::string, впихнуть в него все что нужно.

smile
Ты ничего не понял. Ну ничего, скоро поймешь.
Кстати, было на баше как-то про админов: админы делятся на два типа: тех, которые уже делают бекапы, и тех, которые еще не делают. Выводы сделай сам.
PM   Вверх
JackYF
Дата 16.6.2008, 17:25 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(andrew_121 @  16.6.2008,  16:01 Найти цитируемый пост)
Буду сюда писать вопросы по реализации сего класса.

За тебя уже всё реализовано, что ты собираешься реализовывать?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
andrew_121
Дата 16.6.2008, 17:32 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



bsa, JackYF - Вам смешно. А мне совсем не до смеха. При виде кусков кода по разбору, и парсингу std::string !!!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
bsa
Дата 16.6.2008, 17:37 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



andrew_121, зачем стринг разбирать и более того, парсить? Нужно выделить какой-то элемент - напиши функцию, которая это делает. И будет все понятно. Как ты ее напишешь - сугубо на твоей совести, главное, чтобы в основном теле программы прослеживался алгоритм, и не было лишних отвлечений на всякие ненужные в данном месте детали.
PM   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0627 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.