На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 380 381 [382] 383 384 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата Повстанець @
    К WinAPIшным строкам -- ещё как имеет.

    У меня вектор больше асоциируется с массивом данных.

    Цитата Повстанець @
    Там строки -- соглашение о векторе с нулём в конце. :yes:

    Можно подробнее?
      Цитата KILLER @
      У меня вектор больше асоциируется с массивом данных.
      Дык и строка WinAPIшная -- массив чаров.
        Цитата D_KEY @
        Не, там какое-то несоответствие и типов, и шаблонных параметров.
        Кроме того, у тебя там ничего не изменяется.

        Ну может гдето ошибся в названии идентификатора, а насчет не изменяется, как же?
        Я из глинянного сосуда, делаю кувшин. Хотя наверное ты прав, я немного подпилил пример, смотри, похоже оно:
        ExpandedWrap disabled
                функция СделатьКувшин(глина, количество глины)
                {
                   делаем кувшин из глины.
                }
                
                int main()
                {
                   std::string_СосудCГлиной сосуд("Я сосуд с глиной");
                
                   std::vector_БездоннаяБочка<глина> БочкаГлины(сосуд.НалитьГлины(), сосуд.ПокаОнаНеКончицаВСосуде());
                   БочкаГлины.добавить(дно/крышку);
                
                   СделатьКувшин( оператор_взятия_глины(БочкаГлины) );
                
                
                }


        Добавлено
        Цитата D_KEY @
        Чем он хуже массива char'ов?

        Цитата Повстанець @
        Дык и строка WinAPIшная -- массив чаров.

        Тем, что при работе с вектором, у меня не возникает желания отслеживать в нем '\0' .
        Сообщение отредактировано: KILLER -
          Цитата KILLER @
          Тем, что при работе с вектором, у меня не возникает желания отслеживать в нем '\0' .
          Дык это требования WinApi. Почему система типов языка должна соответствовать требованиям отдельной операционной системы?
            Цитата Повстанець @
            Дык это требования WinApi. Почему система типов языка должна соответствовать требованиям отдельной операционной системы?

            Та чего ж ты до WinApi пристал то :D Это был всего лишь наглядный пример, где работа с std::string'ами, не очень удобна.
              Цитата KILLER @
              Та чего ж ты до WinApi пристал
              Дык у тебя кроме него ничего и нет.
              Цитата KILLER @
              Это был всего лишь наглядный пример, где работа с std::string'ами, не очень удобна.
              Ну да. Требовать от одного типа, чтобы он работал как другой не очень удобно. Да.
                Цитата KILLER @
                смотри, похоже оно:
                ExpandedWrap disabled
                        функция СделатьКувшин(глина, количество глины)
                        {
                           делаем кувшин из глины.
                        }
                        
                        int main()
                        {
                           std::string_СосудCГлиной сосуд("Я сосуд с глиной");
                        
                           std::vector_БездоннаяБочка<глина> БочкаГлины(сосуд.НалитьГлины(), сосуд.ПокаОнаНеКончицаВСосуде());
                           БочкаГлины.добавить(дно/крышку);
                        
                           СделатьКувшин( оператор_взятия_глины(БочкаГлины) );
                        
                        
                        }

                Вот уже лучше. Ну так что тебе не нравится?

                Цитата
                Тем, что при работе с вектором, у меня не возникает желания отслеживать в нем '\0'

                А при работе с char* воздникает?

                Добавлено
                KILLER, а вообще ты спугнул снова появившихся было Delphi'цев :'(
                  Цитата Повстанець @
                  Дык у тебя кроме него ничего и нет.

                  Как нет? Откуда ты знаешь что у меня есть, а чего у меня нет? Кроме WinAPI, больше нет библ которые юзают С-строки ?

                  Цитата Повстанець @
                  Ну да. Требовать от одного типа, чтобы он работал как другой не очень удобно. Да.

                  ну ведь вектор, который к строкам отношения не имеет ты ведь юзаешь нормально.

                  А давай зайдем с тылу, вот ответьте мне на вопрос, что такое строка в С++, подчеркиваю именно в С++ ?

                  Добавлено
                  Цитата D_KEY @
                  Вот уже лучше. Ну так что тебе не нравится?

                  Мне не нравится то, что для того чтобы слепить кувшин, мне приходится брать бездонную бочку, переливать в нее глину из сосуда с глиной, потом натравливать на эту бочку оператор взятия глины! И это нужно учитывать, что после переливания глины из сосуда в бочку, если вдруг забыл бочке дно сделать, то глины будет немеряно... И можно получить не совсем таки кувшин... не проще ли брать глину непосредственно из сосуда?

                  Цитата D_KEY @
                  А при работе с char* воздникает?

                  Как с С-строками? Конечно.

                  Цитата D_KEY @
                  KILLER, а вообще ты спугнул снова появившихся было Delphi'цев :'(

                  Это не я :unsure:
                    Цитата KILLER @
                    ну ведь вектор, который к строкам отношения не имеет ты ведь юзаешь нормально.
                    Ну да. Если за строку приняли вектор с нулём в конце, то на нижних слоях системы именно им и пользуюсь. И даже частенько не std::vector, а тупо tchar[size] на стеке. Если размер и юзкейс зараннее известен.
                    Цитата KILLER @
                    Кроме WinAPI, больше нет библ которые юзают С-строки ?
                    Дык и поступают с такими либами так же, как и с WinApi.
                    Цитата KILLER @
                    А давай зайдем с тылу, вот ответьте мне на вопрос, что такое строка в С++, подчеркиваю именно в С++ ?
                    дык известно что, std::string.
                      Цитата Повстанець @
                      Ну да. Если за строку приняли вектор с нулём в конце, то на нижних слоях системы именно им и пользуюсь. И даже частенько не std::vector, а тупо tchar[size] на стеке. Если размер и юзкейс зараннее известен.

                      Вот об этом я и говорю. В итоге приходица таки делать лишнии, никому не нужные и мазолящие глаза временные буфера.

                      Цитата Повстанець @
                      Дык и поступают с такими либами так же, как и с WinApi.

                      Конечно! Я и говорю, чего ты к Винапи привязался.

                      Цитата Повстанець @
                      дык известно что, std::string.

                      а как же остальное?
                        Цитата KILLER @
                        Мне не нравится то, что для того чтобы слепить кувшин, мне приходится брать бездонную бочку, переливать в нее глину из сосуда с глиной, потом натравливать на эту бочку оператор взятия глины! И это нужно учитывать, что после переливания глины из сосуда в бочку, если вдруг забыл бочке дно сделать, то глины будет немеряно... И можно получить не совсем таки кувшин... не проще ли брать глину непосредственно из сосуда?

                        Так я не понимаю, почему ты так и не сделал? Скопируй глину из сосуда, сделай кувшин, затем помести обратно в сосуд.

                        Цитата
                        Как с С-строками? Конечно.

                        Так в чем разница при работе как с С-строкой между char* и std::vector?
                          Цитата D_KEY @
                          Так я не понимаю, почему ты так и не сделал? Скопируй глину из сосуда, сделай кувшин, затем помести обратно в сосуд.

                          А я разве не то сделал? ну разве что обратно в сосуд я не поместил, ибо лень было писать.

                          Цитата D_KEY @
                          Так в чем разница при работе как с С-строкой между char* и std::vector?

                          Так в этом разница и есть, когда я вижу char*, и вижу в описании функции что работает с этим указателем как с С-строкой, применяя спец функции, я сразу понимаю что это С-строка, когда я вижу вектор(неважно чего), я сразу понимаю - что это данные, массив данных, но не строка.

                          Добавлено
                          D_KEY, если ты не понял, меня смущает то, что я должен юзать вообще какие то левые классы/обертки/извраты и все остальное, только для того, чтобы поработать со строкой... Мне приходица переключатся на другие типы данных, чтобы имитировать С-строку...
                          Сообщение отредактировано: KILLER -
                            Цитата KILLER @
                            Вот об этом я и говорю. В итоге приходица таки делать лишнии, никому не нужные и мазолящие глаза временные буфера.
                            Блин, а голова тебе зачем? чтобы есть в неё?
                            ExpandedWrap disabled
                              template<typename char_t, typename sting_t = std::basic_string<char_t>>
                              class cchar_to_string_bridge
                              {
                              public:
                                  typedef char_t char_type;
                                  typedef sting_t string_type;
                               
                              public:
                                  cchar_to_string_bridge(string_type& str, std::size_t size) : _cchar_string(size, 0), _string(str)
                                  {
                               
                                  }
                               
                                  ~cchar_to_string_bridge()
                                  {
                                      _string = std::string(_cchar_string.begin(), _cchar_string.end());
                                  }
                               
                                  operator char_type*()
                                  {
                                      return &_cchar_string[0];
                                  }
                               
                              private:
                                  string_type& _string;
                                  std::vector<char_type> _cchar_string;
                               
                               
                              };
                               
                               
                              int main()
                              {
                                  std::string curr_dir;
                               
                                  GetCurrentDirectory(MAX_PATH, cchar_to_string_bridge<TCHAR>(curr_dir, MAX_PATH));
                               
                                  return 0;
                              }
                              Цитата Повстанець @
                              Блин, а голова тебе зачем? чтобы есть в неё?

                              Ага, хороший велосипед, показывает всю гибкость работы с std::string :good:
                              Сообщение отредактировано: KILLER -
                                Цитата KILLER @
                                D_KEY, если ты не понял, меня смущает то, что я должен юзать вообще какие то левые классы/обертки/извраты и все остальное, только для того, чтобы поработать со строкой...

                                Тебе не со строкой поработать надо, а с массивом данных, С-строкой, которое некоторое API считает строкой :)
                                Чего ты вообще хочешь, работая с неродным для языка API?
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 380 381 [382] 383 384 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.5364 ]   [ 15 queries used ]   [ Generated: 30.07.26, 14:53 GMT ]