На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (4) 1 2 [3] 4  все  ( Перейти к последнему сообщению )  
> Распространённые функции библиотеки , не имеющие аналогов в Стандарте
    Цитата JoeUser @
    Лишь говорю о том, что маска вывода у printf/sprint делает форматирование гораздо удобнее и лаконичнее, чем все эти std::hex, std::oct, std::setw, etc ... И не более. Никаких сравнений C vs C++.

    Так в том и дело, что ты рассматриваешь только удобство форматирования, и все. Но почему то использование функций для этого форматирования, как я понял - ты не рассматриваешь. Почему - не понятно.
    Ты ведь изначально написал, что printf часто удобнее std::cout. На практике - не удобнее ни разу.
    Может быть ты и напишешь меньше букв, но проблем в коде, от этого у тебя не убавится, а напротив - добавятся. Ты это не учитываешь.
    Я ж выше пример приводил, что проще написать int* p = new int, чем писать всякие std::shared_ptr и им подобные, меньше букв ведь выходит, но вот есть ли профит в этом? Вот у тебя выходит ровно то же самое.
    Сообщение отредактировано: Wound -
      Цитата OpenGL @
      И к чему это тут?

      Это я о якобы "сферическовакуумном удобстве" форматной строки. Если уж в относительно новом языке Раст это пользуется (строка форматирования), значит - это не сферично, а удобно. Остальное, что ты написал я не понимаю.

      Добавлено
      Цитата Wound @
      не убавится, а напротив - добавятся.

      Это не то место - где нужно боятся ошибок. В Си-подобных конструкциях есть более другие боле опасные места. Тут - ни а чем.
        Цитата JoeUser @
        Это не то место - где нужно боятся ошибок.

        Угу, конечно:
        Printf#Уязвимости
          Цитата JoeUser @
          Это я о якобы "сферическовакуумном удобстве" форматной строки.

          А, то есть ты и слово "сферическовакуумный" не понимаешь :lool:
            Вы все врети (С) :)
              Цитата Wound @
              А если нужно оперировать бинарными данными? Или считать из файла бинарные данные?

              Я это делаю уже лет 15, больше чем на 10 языках, разницы принципиально никакой.
              точнее она мизерная, но ее зачем то пытаяюся раздуть, до астрономических
              размеров . ;) Единсвенный недостаток - нет деструкторов, хотя верояность
              забыть close(fd) почти нулевая ,

              Вот пример кода нa Cи, на С++ если не брать либы , будет тоже самое,
              Не использовать Си в крестах значит отказаться от целого рада задач,

              ExpandedWrap disabled
                  struct pollfd fds[1];
                  while(1) {
                       rc= poll(fds,1,0);
                       if(rc< 0) {
                            perror(" poll error") ;
                       }
                        
                        rc= read(fds[0].fd,buf, sizeof(buf));
                        if(rc < 0 ) {
                             perror(" pipe close");
                            continue;
                        }
                        buf[rc] ='\0';
                        printf(" reading : %s", buf);
                    }


              C++ это сегодня - условно "быстрая жава", язык для апликации,
              если нужно работать с памятью, сетью, портами и т.д. то придеться вставлять С,
              хоть та крестах хоть на звездах :huh:
                Цитата settler @
                Я это делаю уже лет 15, больше чем на 10 языках, разницы принципиально никакой.
                точнее она мизерная, но ее зачем то пытаяюся раздуть, до астрономических
                размеров . Единсвенный недостаток - нет деструкторов, хотя верояность
                забыть close(fd) почти нулевая ,

                Лол. Если ты выдашь бинарные данные в printf, то ничем хорошим это не закончится как минимум.

                Цитата settler @
                Вот пример кода нa Cи, на С++ если не брать либы , будет тоже самое,
                Не использовать Си в крестах значит отказаться от целого рада задач,

                Интересно, ты знаешь, что значит %s в строчке -> printf(" reading : %s", buf);
                ?
                Каким образом бинарные данные превратились в строку? Ты судя по всему даже в типах данных не ориентируешься.
                  Цитата Wound @
                  Каким образом бинарные данные превратились в строку?

                  типом файла, точно также как в любом языке .
                    ExpandedWrap disabled
                      PollFD fds;
                       
                      for(;;)
                      {
                        fds.poll(0);
                       
                        std::string buf.resize(fds.tellg());
                       
                        fds.read(&buf[0]));
                        std::cout << " reading : ", buf;
                      }
                    Цитата settler @
                    если нужно работать с памятью, сетью, портами и т.д. то придеться вставлять С,
                    Сочувствую.
                      Цитата settler @
                      типом файла, точно также как в любом языке .

                      То есть содержимое файла всегда является строкой? Ты точно ничего не путаешь? А если в бинарном файле вот такая последовательность символов будет:
                      "\0234sd\0\x234dsfg"
                      Расскажи, каким образом функция printf определит конец такой "строки"?
                        Цитата Qraizer @
                        Сочувствую.

                        т.е аргументов нет. ЧТД. ;)

                        Добавлено
                        Цитата Qraizer @
                        ExpandedWrap disabled
                          PollFD fds;
                           
                          for(;;)
                          {
                            fds.poll(0);
                           
                            std::string buf.resize(fds.tellg());
                           
                            fds.read(&buf[0]));
                            std::cout << " reading : ", buf;
                          }
                        Цитата settler @
                        если нужно работать с памятью, сетью, портами и т.д. то придеться вставлять С,
                        Сочувствую.

                        ExpandedWrap disabled
                          PollFD fds;


                        чета Я такой структуры в С++ не нахожу, ну и обработку ошибок добавь,
                        профит будет мизерный, like I'v already said.
                          Цитата settler @
                          Цитата Qraizer @
                          Цитата settler @
                          если нужно работать с памятью, сетью, портами и т.д. то придеться вставлять С
                          Сочувствую.
                          т.е аргументов нет.
                          Есть. Это и был аргумент. Тебе придётся, мне не придётся. Впрочем, мы это уже проходили.
                          Цитата settler @
                          чета Я такой структуры в С++ не нахожу, ну и обработку ошибок добавь,
                          профит будет мизерный
                          Ты много чего в C++ не найдёшь, зато можешь добавить. Это мой класс. Обработка ошибок внутри.
                            Цитата Qraizer @
                            Это мой класс. Обработка ошибок внутри.

                            Который внутри, использует Си, сделать хотя не все (CreateRemoteThread для примера
                            на плюсах нет) или добраться до private members, по сути(взлом) только на Cи,
                            share memory на плюсах не сделаешь, а если сделаешь то большой вопрос,
                            стоит ли овчинка выделки? В 2011 ты смог оптимизировать снизив скорость с 400 до 12%,
                            a сможешь ли каждый раз так сделать?, а если ты заболел или ушел, кто вместо тебя это сделает? Не надо фанатизма, изобретать свой std::map глупо, также как насильно
                            пихать ООП once is not critical necessary.
                            Ошибки на Си try catch тоже делаются если очень надо,

                            Ну и еще фактор привычки, навыков и т.д.
                            А смешивать стили без необходимости нету смысла, если решил юзать cout ,
                            то пользуй std:endl a не "\n", and vice versa.
                              Цитата settler @
                              Который внутри, использует Си
                              Уверен?
                              А даже если и так, что с того? Написал один раз, использовать буду много, и всё по-Плюсовому. Твои C-функции тоже запросто могут быть написаны на ассемблере или паскале. К слову, RTL для C в новых MS-ных студиях написана на C++. Всё по-взрослому, на шаблонах, с RAI, итп. Ну-ну, пиши на C дальше.
                                Цитата Qraizer @
                                Цитата settler @
                                Который внутри, использует Си
                                Уверен?
                                А даже если и так, что с того? Написал один раз, использовать буду много, и всё по-Плюсовому. Твои C-функции тоже запросто могут быть написаны на ассемблере или паскале. К слову, RTL для C в новых MS-ных студиях написана на C++. Всё по-взрослому, на шаблонах, с RAI, итп. Ну-ну, пиши на C дальше.

                                Использовать много раз можно написав на чем угодно, а выбор языка зависит
                                от задачи, не понимаю твоей категоричности.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (4) 1 2 [3] 4  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0529 ]   [ 17 queries used ]   [ Generated: 28.03.24, 18:44 GMT ]