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

    Давай тебе вопрос. Какое отношение имеет std::string к согласованию о строках, принятому в С?
      Цитата KILLER @
      Цитата Повстанець @
      Блин, а голова тебе зачем? чтобы есть в неё?

      Ага, хороший велосипед, показывает всю гибкость работы с std::string :good:

      Причем тут работа с std::string, если ты хочешь работать с С-строками?

      Добавлено
      Цитата Повстанець @
      Какое отношение имеет std::string к согласованию о строках, принятому в С?

      Кстати, KILLER, ты случаем не считаешь С++ и С один и тем же языком :ph34r: ?
        Вот где сила :P :D
        ExpandedWrap disabled
          function CurrentDirectory: ShortString;
          var
            Len: Byte absolute Result;
          begin
            Len := GetCurrentDirectory(SizeOf(Result), @Result[1]);
          end;
           
          procedure TForm1.FormCreate(Sender: TObject);
          begin
            ShowMessage(CurrentDirectory);
          end;
          KILLER, в C нет строк. Там есть только массивы символов. Если ты пишешь C++ код для API, ориентированного на C, неважно, какого уровня, хоть Win, хоть zlib, забудь о строках. Вообще. Тебе не нужны строки, потому что все такие APIs используют массивы символов. Строка - это тип данных, к массивам символов не имеющий никакого отношения. Вот это и есть std::basic_string<>. Наличие в нём std::basic_string<>::data() и std::basic_string<>::c_str(), вообще говоря на фиг не нужно. Они там для обратной совместимости, а не для лентяев думать перед декомпозицией.
          Цитата D_KEY @
          KILLER, а вообще ты спугнул снова появившихся было Delphi'цев
          Они просто представили свои строки как аргументы WinAPI-функций, и потому решили не отсвечивать до поры.
            Цитата Повстанець @
            Показывает гибкость С++.

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

            Цитата Повстанець @
            Давай тебе вопрос. Какое отношение имеет std::string к согласованию о строках, принятому в С?

            Такое, что С++ тесно связан с С, да вот только толку от этой тесной связи ноль.

            Цитата D_KEY @
            Причем тут работа с std::string, если ты хочешь работать с С-строками?

            Нет, я хочу работать с std::sting строками, у меня просто есть функция принимающаяя С-строку.

            Цитата D_KEY @
            Кстати, KILLER, ты случаем не считаешь С++ и С один и тем же языком ?

            Нет :unsure:

            Цитата Qraizer @
            KILLER, в C нет строк. Там есть только массивы символов. Если ты пишешь C++ код для API, ориентированного на C, неважно, какого уровня, хоть Win, хоть zlib, забудь о строках. Вообще.

            Причем тут С ?
            Я что не могу написать код основанный на массивах символов на С++ ? Господа, зачем вы пытаетесь оправдать костыли языка? Мне С++ позволит сделать такую функцию, в которую std::string я не передам.

            Цитата Qraizer @
            Тебе не нужны строки, потому что все такие APIs используют массивы символов. Строка - это тип данных, к массивам символов не имеющий никакого отношения. Вот это и есть std::basic_string<>. Наличие в нём std::basic_string<>::data() и std::basic_string<>::c_str(), вообще говоря на фиг не нужно. Они там для обратной совместимости, а не для лентяев думать перед декомпозицией.

            А кто этот std::string юзает и где? В теории? Или в мелких проектах? В том же MFC, я лично ниразу не юзал std::string - ибо это поделие там нафиг не упало, зачем мне лентяю сидеть писать обертки конвертирования из std::string в С-строки и наоборот, если там у меня есть CString, который работает без проблем...

            Скрытый текст
            Щас опять какаянибудь овца будет мычать об ущербности MFC... которое тут к теме не относится
              Цитата KILLER @
              Я что не могу написать код основанный на массивах символов на С++ ? Господа, зачем вы пытаетесь оправдать костыли языка?
              Можешь. Запросто. std::vector<> как раз Плюсовые массивы символов, юзай на здоровье. Костыли языка - это когда он предоставляет доступ к реализации в обход публичного интерфейса. std::basic_string<>::data() и std::basic_string<>::c_str() как раз это делают, и поэтому по-хорошему должны быть выброшены из программ, за исключением как раз случаев покостылить. KILLER, если ты жить не можешь без того, чтобы нарушить инкапсуляцию и самостоятельно завладеть стораджем объекта вместо него самого, то это не проблема языка.
                Цитата KILLER @
                Мне С++ позволит сделать такую функцию, в которую std::string я не передам.

                ИМХО, достойно башорга :)
                  Цитата D_KEY @
                  Разве что для utf-8 или другой мультибайтовой кодировки, ибо для работы с символами переменной длины basic_string будет не эффективен.
                  Ну, UTF16 тоже много...э-э-э...символен :blink: .
                    Цитата Qraizer @
                    Цитата D_KEY @
                    Разве что для utf-8 или другой мультибайтовой кодировки, ибо для работы с символами переменной длины basic_string будет не эффективен.
                    Ну, UTF16 тоже много...э-э-э...символен :blink: .

                    я думаю D_KEY имел в виду строки, где у символов нефиксированная длина (в смысле в одной строке встречаются как 8-ми-, так и 16-ти- и 32-х-битные символы)
                    или вы о чем тут?
                    Сообщение отредактировано: korvin -
                      Цитата KILLER @
                      Щас опять какаянибудь овца будет мычать об ущербности MFC... которое тут к теме не относится

                      А что, если овца промолчит, то MFC перестанет быть ущербным?
                      Цитата KILLER @
                      А кто этот std::string юзает и где?

                      В любом современном проекте на C++. Ну, например, в голову приходит MongoDB.
                      Цитата KILLER @
                      В том же MFC, я лично ниразу не юзал std::string - ибо это поделие там нафиг не упало, зачем мне лентяю сидеть писать обертки конвертирования из std::string в С-строки и наоборот, если там у меня есть CString, который работает без проблем...

                      Ну, так и не надо писать. Только из этого не следует вывод, что std::basic_string "какой-то не такой".

                      Добавлено
                      Цитата korvin @
                      я думаю D_KEY имел в виду строки, где у символов нефиксированная длина (в смысле в одной строке встречаются как 8-ми-, так и 16-ти- и 32-х-битные символы)
                      или вы о чем тут?

                      Все так и поняли, но в UTF16 символ может занимать 16 или 32 бита.
                        Цитата MyNameIsIgor @
                        Все так и поняли, но в UTF16 символ может занимать 16 или 32 бита.

                        а, не знал, думал там строго 16
                        Сообщение отредактировано: korvin -
                          Цитата Qraizer @
                          Можешь. Запросто. std::vector<> как раз Плюсовые массивы символов, юзай на здоровье. Костыли языка - это когда он предоставляет доступ к реализации в обход публичного интерфейса.

                          Причем тут векторы? я имел ввиду С-строки, никуда они не делись, они в полном объеме перешли в С++, без всяких обратных совместимостей.

                          Цитата Qraizer @
                          KILLER, если ты жить не можешь без того, чтобы нарушить инкапсуляцию и самостоятельно завладеть стораджем объекта вместо него самого, то это не проблема языка.

                          Я как раз таки этого всячески стараюсь избегать. std::string - это говно поделие, которое мало где прикрутишь, а также приходица постоянно писать лишнего кода, при его использовании...

                          Цитата OpenGL @
                          ИМХО, достойно башорга

                          Конечно, речь ведь идет все о тех же С-строках. Вот тебе кусок кода:
                          ExpandedWrap disabled
                            void func(char* dst, const char* src)
                            {
                               strcpy_safe(dst, src); //! моя функция, ее реализация неважна, работает с голыми указателями на char
                            }

                          На глаз скажешь это я на С++ или на чистом С написал? std::string схавает?

                          Цитата MyNameIsIgor @
                          А что, если овца промолчит, то MFC перестанет быть ущербным?

                          Во первых речь тут не об ущербности отдельно взятых технологий, во вторых ну давай, рожай в чем ущербность WinAPI и MFC в частности? В том что ты их не осилил?

                          Цитата MyNameIsIgor @
                          В любом современном проекте на C++. Ну, например, в голову приходит MongoDB.

                          Расмешил однако... Их юзают там, где они мало пересекаются с другими строками, там где идет пересечение, начинаются пляски с бубнами...

                          Цитата MyNameIsIgor @
                          Ну, так и не надо писать. Только из этого не следует вывод, что std::basic_string "какой-то не такой".

                          Он не просто не такой, он ущербен в смысле своем, причем на столько ущербен, что для того чтобы юзать его паралельно с С-строками, приходица извращатся или через временные буферы на статике или через вектора.
                          Сообщение отредактировано: KILLER -
                            Цитата KILLER @
                            Во первых речь тут не об ущербности отдельно взятых технологий, во вторых ну давай, рожай в чем ущербность WinAPI и MFC в частности? В том что ты их не осилил?

                            Нет :) В первую очередь - в их монструозности. А MFC ещё убог тем фактом, что вообще никак не соотносится с развитием плюсов - как был сделан для достандартных компиляторов, так даже и не пытается идти в ногу со временем.
                            Цитата KILLER @
                            Расмешил однако... Их юзают там, где они мало пересекаются с другими строками, там где идет пересечение, начинаются пляски с бубнами...

                            Ну, char* используется в mongo по полной, и проблем нет. А всякие WinAPI да, нафиг не упали этим ребятам :)
                            Цитата KILLER @
                            Он не просто не такой, он ущербен в смысле своем, причем на столько ущербен, что для того чтобы юзать его паралельно с С-строками, приходица извращатся или через временные буферы на статике или через вектора.

                            Месье может назвать строки хоть из какого ЯП, которые гораздо лучше уживаются с char* ? :)
                              Цитата KILLER @
                              в чем ущербность WinAPI и MFC в частности?
                              MFC -- это просто уникальнейшее сочетание громоздкости, сложности и неочевидности с одной стороны, при низком уровне абстракции и низком уровне автоматизации по сравнению с WinAPI с другой стороны.
                                Цитата MyNameIsIgor @
                                Нет В первую очередь - в их монструозности.

                                ОМГ, а boost, QT - это у нас компактные АПИ...хы хы,..

                                Цитата MyNameIsIgor @
                                А MFC ещё убог тем фактом, что вообще никак не соотносится с развитием плюсов - как был сделан для достандартных компиляторов, так даже и не пытается идти в ногу со временем.

                                Да его уже давно забросили, но как это может относится к его ущербности?

                                Цитата MyNameIsIgor @
                                у, char* используется в mongo по полной, и проблем нет. А всякие WinAPI да, нафиг не упали этим ребятам

                                нафиг они юзают char*, если есть std::string ? А всякие WinApi причем тут?

                                Цитата MyNameIsIgor @
                                Месье может назвать строки хоть из какого ЯП, которые гораздо лучше уживаются с char* ?

                                Да дело не char*, std::string - он по своей сути ущербен. Чем он лучше вектора? И зачем он есть, мне лично не понятно.

                                Добавлено
                                Цитата Повстанець @
                                MFC -- это просто уникальнейшее сочетание громоздкости, сложности и неочевидности с одной стороны, при низком уровне абстракции и низком уровне автоматизации по сравнению с WinAPI с другой стороны.

                                Можешь привести пример сложности и неочевидности ?

                                Добавлено
                                Господа ценители std::string, попробуйте оформить классно с помощью std::string класса, вот такой SQL запрос:
                                ExpandedWrap disabled
                                  std::string MakeSQL(long date_from, long date_to, const std::string& comment)
                                  {
                                  /*
                                  SELECT DISTINCT table1.code
                                  FROM table1
                                  JOIN table2 .set = table1.primary_key
                                  WHERE
                                  table1.date between :date_from and :date_to AND
                                  table2.text like :comment
                                  */
                                  }

                                Мне очень интересно, как вы сейчас будете извращаться через ostring_stream класс, но хотелось бы увидеть реализацию с помощью std::string могучего класса. Даты я задаю извне, и у меня они там типа long(как вы заметили). Давайте, сделайте мне std::string буфер из комента в коде, я в вас верю...
                                Сообщение отредактировано: KILLER -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 381 382 [383] 384 385 ...  494 495


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