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

    Как написать такое вообще может в голову придти?
      Цитата D_KEY @
      Стандартный :)

      в первую очередь он пользовательский, а уж потом стандартный. И как же стандартный класс строка оставили без обратной совместимости, с char* ?

      Цитата D_KEY @
      Какой там был выше приведен недостаток :blink: ?

      Такой, что работая с std::string классом, в WIN API, а также в С либах, либо в либах, которые оперируют типами char*, приходится извращатся по разному, чтобы код, более менее был написан в одном стиле, а не юзал std::string/char*/std::vector, для работы с одними только строками...

      Добавлено
      Цитата D_KEY @
      Если язык позволяет создать точно такой же пользовательский тип, то зачем его зашивать в язык :-?

      Как зачем? Чтобы при работе со строками, работали со строками а не юзали кучу типов.

      Цитата D_KEY @
      Нет, стандарт не дает тебе гарантий, что твои попытки писать в результат c_str(), изменят исходную строку(а не какой-то дополнительный буфер, например).

      Итог будет всегда один, неверный результат работы программы. Смысла в этой гарантии я не особо вижу..

      Цитата MyNameIsIgor @
      Какой же он пользовательский то в std? :huh:

      Такой, что это класс, а класс по определению это - ???(сам догадаешься :D )

      Цитата MyNameIsIgor @
      Конечно. Всем не угодишь. Я ещё раз говорю: строки в плюсах не проектировались как выходные буфера. Они проектировались как строки.

      И какой от них профит?

      Цитата MyNameIsIgor @
      Я стараюсь вообще всегда думать головой :)

      И чего, никогда ошибок не делал в программах?

      Цитата D_KEY @
      Как написать такое вообще может в голову придти?

      Очень просто, человек новичок, именно так и сделает, ему важно чтобы оно откомпилилось :D
        Цитата KILLER @
        И как же стандартный класс строка оставили без обратной совместимости, с char* ?

        basic_string не является оберткой над С-строками. Это самостоятельной средство, хотя оно и содержит несколько дополнительных средств для конструирования/равенства/чтения из/в С-строки.
        С-строки, как ни странно, оставлены для совместимости с С.

        Цитата
        Такой, что работая с std::string классом, в WIN API, а также в С либах, либо в либах, которые оперируют типами char*, приходится извращатся по разному, чтобы код, более менее был написан в одном стиле, а не юзал std::string/char*/std::vector, для работы с одними только строками...

        Ничего там не надо извращаться. Если некое C API ждет буфер - то и передавай буфер(std::vector), а не строки.
          Цитата MyNameIsIgor @
          А в плюсах принято долго думать головой, прежде чем шагнуть :)

          FIXED
            D_KEY, да ладно еще та GetCurrentDirectory, а как быть с функциями, которые обрезают часть переданной строки ? Да и принимают всего лишь char* ? Ту уже вектор не передашь, ибо такая функция просто напросто сделает его невалидным...
              Цитата KILLER @
              И какой от них профит?

              Такой же, как от любых других строк в любом другом языке :-?
                Цитата korvin @
                Цитата (MyNameIsIgor @ Сегодня, 14:42)
                Цитата
                А в плюсах принято долго думать головой, прежде чем шагнуть :)


                FIXED

                Это более правильнее..

                Цитата D_KEY @
                basic_string не является оберткой над С-строками. Это самостоятельной средство, хотя оно и содержит несколько дополнительных средств для конструирования/равенства/чтения из/в С-строки.
                С-строки, как ни странно, оставлены для совместимости с С.

                С-строки говоришь? или указатели? Чем С-строка отличаеться от плюсового char* ? :D

                Цитата D_KEY @
                Ничего там не надо извращаться. Если некое C API ждет буфер - то и передавай буфер(std::vector), а не строки.

                Цитата KILLER @
                D_KEY, да ладно еще та GetCurrentDirectory, а как быть с функциями, которые обрезают часть переданной строки ? Да и принимают всего лишь char* ? Ту уже вектор не передашь, ибо такая функция просто напросто сделает его невалидным...
                  Цитата KILLER @
                  а как быть с функциями, которые обрезают часть переданной строки ?

                  Пример?

                  Цитата
                  Да и принимают всего лишь char* ? Ту уже вектор не передашь, ибо такая функция просто напросто сделает его невалидным...

                  Подробнее, пожалуйста :)

                  Добавлено
                  Цитата korvin @
                  Цитата MyNameIsIgor @
                  А в плюсах принято долго думать головой, прежде чем шагнуть :)

                  FIXED

                  Если так, то ты зря выбрал плюсы для этого проекта :)
                    Цитата D_KEY @
                    Такой же, как от любых других строк в любом другом языке :-?

                    Ну так в любом другом языке, не юзают массивы символов, для работы со строками(при условии что тип строка в этих ЯП присутствует)
                      Цитата KILLER @
                      С-строки говоришь? или указатели? Чем С-строка отличаеться от плюсового char* ? :D

                      Чего? С-строка - это строка с нулевым символом в конце. А char * - это указатель на char :lol:

                      Добавлено
                      Цитата KILLER @
                      Цитата D_KEY @
                      Такой же, как от любых других строк в любом другом языке :-?

                      Ну так в любом другом языке, не юзают массивы символов, для работы со строками(при условии что тип строка в этих ЯП присутствует)

                      В Haskell(и не только) юзают списки символов в качестве строк.
                        Цитата D_KEY @
                        Пример?

                        да банальная функция trim, которая будет убирать пробелы вначале и в конце строк. Конечно ты сейчас можешь написать тут алгоритм и т.д. и т.п. но заметь это банальный пример.

                        Цитата D_KEY @
                        Подробнее, пожалуйста :)

                        Ну передашь ты туда указатель на первый элемент вектора, она возьмет и изменит чета, удалит там некоторые элементы.
                          Цитата korvin @
                          FIXED

                          Тот, кто не понял банальные плюсовые trait'ы будет мне рассказывать, сколько надо думать в плюсах? :lool:
                            Цитата KILLER @
                            Цитата D_KEY @
                            Пример?

                            да банальная функция trim, которая будет убирать пробелы вначале и в конце строк.

                            Покажи.

                            Цитата
                            Цитата D_KEY @
                            Подробнее, пожалуйста :)

                            Ну передашь ты туда указатель на первый элемент вектора, она возьмет и изменит чета, удалит там некоторые элементы.

                            И что?
                              Цитата D_KEY @
                              Чего? С-строка - это строка с нулевым символом в конце. А char * - это указатель на char :lol:

                              Того, что строка это таки массив символов с нулевым символом в конце, и эта строка ничем не отличается от char*.

                              Цитата D_KEY @
                              В Haskell(и не только) юзают списки символов в качестве строк.

                              В них есть тип строка?

                              Добавлено
                              Цитата D_KEY @
                              Покажи.

                              Мне влом было писать свою, вот нашел в инете гдето:
                              ExpandedWrap disabled
                                #define TRIM_LEFT 0 //
                                 
                                #define TRIM_RIGHT 1
                                 
                                #define TRIM_BOTH 2
                                 
                                 
                                 
                                void trim(char* Str, int Type) {
                                 
                                    int StrLn = strlen(Str) + 1;
                                 
                                    if ((StrLn == 0) || (Type < TRIM_LEFT) || (Type > TRIM_BOTH)) {
                                 
                                        return;
                                 
                                    }
                                 
                                    char *NewStr = new char[StrLn];
                                 
                                    int IdxSrc = -1, IdxDest = 0;
                                 
                                    if ((Type == TRIM_LEFT) || (Type == TRIM_BOTH)) {
                                 
                                        bool InText = false;
                                 
                                        while(Str[++IdxSrc]) {
                                 
                                            if (!InText && (Str[IdxSrc] != ' ') && (Str[IdxSrc] != '\n') && (Str[IdxSrc] != '\t')) {
                                 
                                                InText = true;
                                 
                                            }
                                 
                                            if (InText) {
                                 
                                                NewStr[IdxDest++] = Str[IdxSrc];
                                 
                                            }
                                 
                                        }
                                 
                                        NewStr[IdxDest] = '\0';
                                 
                                    } else {
                                 
                                        IdxDest = StrLn - 1;
                                 
                                        strcpy_s(NewStr, StrLn, Str);
                                 
                                    }
                                 
                                    if ((Type == TRIM_RIGHT) || (Type == TRIM_BOTH)) {
                                 
                                        while(--IdxDest > 0) {
                                 
                                            if ((NewStr[IdxDest] == ' ') || (NewStr[IdxDest] == '\n') || (NewStr[IdxDest] == '\t')) {
                                 
                                                NewStr[IdxDest] = '\0';
                                 
                                            } else {
                                 
                                                break;
                                 
                                            }
                                 
                                        }
                                 
                                    }
                                 
                                    strcpy_s(Str, StrLn, NewStr);
                                 
                                }


                              Цитата D_KEY @
                              И что?

                              Как и что? :blink: То что ты нарушаешь инкапсюляцию, вот что.
                                Цитата D_KEY @
                                Если так, то ты зря выбрал плюсы для этого проекта :)

                                дык я и не выбираю по этой причине =)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 377 378 [379] 380 381 ...  494 495


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