На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Распространённые функции библиотеки , не имеющие аналогов в Стандарте
    Ну вот printf часто удобнее cout'а. Да и _getch'а вроде как нет в C++.

    Добавлено
    Как пример...

    Эта тема была разделена из темы "long double 80 бит (Windows)"
      За printf() vs std::cout – это в Холивары. Я лично с этим в корне не согласен. Что до _getch(), то в Стандарте такой функции нет, даже в C. Это расширение языка, хоть и распространённое, но только потому, что сама платформа, для которой эта функция нужна, распространена.

      Добавлено
      P.S. Аналогов нет – пользуй на здоровье.
        Цитата Qraizer @
        Я лично с этим в корне не согласен.
        С чем "с этим"?

        Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
          Вот с этим:
          Цитата Jin X @
          Ну вот printf часто удобнее cout'а.


          Добавлено
          Единственная ситуация, когда он удобнее, это когда он есть, а std::cout-а нет. Т.е. в C.

          Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
            Qraizer, ты считаешь средства форматирования в потоках i/o удобнее printf/sprintf?

            Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
              Цитата Jin X @
              Да и _getch'а вроде как нет в C++.

              ExpandedWrap disabled
                std::cin.get();

              :huh: ?

              Добавлено
              Цитата JoeUser @
              Qraizer, ты считаешь средства форматирования в потоках i/o удобнее printf/sprintf?

              С ними работать удобнее и безопаснее в С++(с потоками в смысле).
              Допустим та же sprintf не безопасна.

              Добавлено
              Ну и Сишные функции заточены исключительно на голые указатели, что как бы намекает - на то, что ты направил ствол в ногу, и пальцем дергаешь курок. Выстрелит - не выстрелит :-?

              Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
              Сообщение отредактировано: Wound -
                Цитата Wound @
                :huh: ?

                _getch() подавляет эхо, std::cin.get() - нет.

                Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                  Цитата JoeUser @
                  _getch() подавляет эхо, std::cin.get() - нет.

                  Отключи его системными функциями, если тебе нужно именно так:
                  ExpandedWrap disabled
                        HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
                        DWORD mode = 0;
                        GetConsoleMode(hStdin, &mode);
                        SetConsoleMode(hStdin, mode & (~ENABLE_ECHO_INPUT));


                  Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                    Цитата Wound @
                    С ними работать удобнее

                    На счет безопасности не говорим. Тут вопросов нет. А вот на счет удобства форматирования я бы поспорил.
                    К примеру, изобрази это манипуляторами потоков i/o:
                    ExpandedWrap disabled
                      char i = 12;
                      printf("%04d :: %0*x",i,4,i);


                    Добавлено
                    Цитата Wound @
                    Отключи его системными функциями, если тебе нужно именно так:

                    А смысл городить эту "лапшу", если просто можно использовать _getch()?

                    Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                      Цитата JoeUser @
                      К примеру, изобрази это манипуляторами потоков i/o:

                      Загляни в iomanip, выбери интересующий тебя манипулятор - напиши его.

                      Вот тебе обратная задача, изобрази своими sprintf'ми:
                      ExpandedWrap disabled
                        MyObject object;
                        std::string message = "message";
                        std::ostringstream stream;
                        stream << "Message: " << message << << " Size: " << message.size() << object << std::endl;


                      Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                        Оффтопите. Да и Холивары у нас в отдельном разделе.


                        Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                        Сообщение отредактировано: JoeUser -
                          Цитата Wound @
                          Загляни в iomanip, выбери интересующий тебя манипулятор - напиши его.

                          Зачем мне? У меня printf есть :lol: Я просто хотел показать несостоятельность твоего утверждения насчет мнимого "удобства" использования потоков в плане форматирования. А раз пошла песня "возьми и напиши ..." - значит я прав. Мне удобнее использовать готовое, чем изобретать велик :lol:

                          Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                            Цитата Wound @
                            Вот тебе обратная задача, изобрази своими sprintf'ми:

                            Еврейский у тя подход :lol: Не ответив на мой вопрос, задаешь свой :lol:

                            Ну примерно так будет:
                            ExpandedWrap disabled
                              #include <iostream>
                              #include <sstream>
                              #include <cstdio>
                               
                              class MyObject {
                                public:
                                  char* str() {
                                    return const_cast<char*>(Data);      
                                  };
                                private:
                                  const char* Data = "MyObject";
                              };
                               
                              int main() {
                                MyObject object;
                                std::string message = "message";
                                std::ostringstream stream;
                                //stream << "Message: " << message << " Size: " << message.size() << object << std::endl;
                                printf("Message: %s Size: %d%s\n",message.c_str(),message.size(),object.str());
                                return 0;
                              }


                            Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                              Цитата Wound @
                              Отключи его системными функциями, если тебе нужно именно так
                              Ага. Т.е. ради принципа использовать функции C++ я должен нагромождать код всякой ерундой?
                              К тому же, я не о getchar говорю, а о _getch. Мне нужен не ввод строки до Enter'а, а 1 клавиша. Не надо путать.

                              Добавлено
                              Короче... каждый инструмент имеет свои + и -, так что всё нужно применять с умом и к месту.
                              Вот и всё. Хотя эти + и - знать не мешает. Просто не надо говорить, что "а" однозначно лучше, чем "б".

                              Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                                Цитата Jin X @
                                Т.е. ради принципа использовать функции C++ я должен нагромождать код всякой ерундой?

                                Вообщето getch, _getch это не стандартная функция С++, это расширение от Майкрософт. На других системах твой код работать не будет.

                                Добавлено
                                Цитата Jin X @
                                Короче... каждый инструмент имеет свои + и -, так что всё нужно применять с умом и к месту.
                                Вот и всё. Хотя эти + и - знать не мешает. Просто не надо говорить, что "а" однозначно лучше, чем "б".

                                Да, применять Сишные функции в языке С++, когда в нем есть аналоги - это не с умом и не к месту. И я сейчас говорю не о функции getch(так как она не имеет отношения не к С, не к С++).
                                Потому как проще тогда уже взять чистый Си и писать на нем, если на нем проще и удобней реализовать какую то задачу, чем на С++.

                                Добавлено
                                Цитата Wound @
                                На других системах твой код работать не будет.

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

                                Добавлено
                                Ну и если заглянуть в MSDN, то можно внезапно обнаружить такую ремарку(https://msdn.microsoft.com/ru-ru/library/078sfkak.aspx):
                                ExpandedWrap disabled
                                  This API cannot be used in applications that execute in the Windows Runtime. For more information, see CRT functions not supported with /ZW.

                                То есть оно даже к твоему удивлению может перестать работать, после изменения настроек компилятора.

                                Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                                Сообщение отредактировано: Wound -
                                  Цитата Wound @
                                  Отключи его системными функциями, если тебе нужно именно так:

                                  Для POSIX-терминалов не пойдет, там нужно работать с другими сущностями - из termios.h.
                                  Вот поэтому кроссплатформенный ввод без эха и не реализован в Стандарте.

                                  Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                                    Цитата JoeUser @
                                    Для POSIX-терминалов не пойдет, там нужно работать с другими сущностями - из termios.h.

                                    Конечно не подойдет, потому как даже по словам HANDLE/DWORD/GetConsoleMode и т.д. можно догадаться что речь идет о Windows.
                                    Вариант с _getch/getch - так же не подойдет, и? :-?

                                    Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                                      Цитата Wound @
                                      Вариант с _getch/getch - так же не подойдет, и?

                                      _getch - для винды короче, чем std::cin.get :-? А эффект тот же.

                                      Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                                        Цитата JoeUser @
                                        _getch - для винды короче, чем std::cin.get :-? А эффект тот же.

                                        Странная логика :whistle:

                                        int* p = new int;
                                        короче, чем
                                        std::unique_ptr<int> p = std::make_unique();
                                        А эффект тот же.

                                        Но почему то рекомендуется использовать второе, в противовес первому.

                                        Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                                          Зачем ты приплел охрану указателя? Вопрос был простой - считать символ с консоли венды. Все. Ничего более.

                                          Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                                            Цитата JoeUser @
                                            Зачем ты приплел охрану указателя?

                                            Затем же, зачем ты сравниваешь левую непереносимую функцию со стандартными возможностями языка :-?

                                            Цитата JoeUser @
                                            Вопрос был простой - считать символ с консоли венды. Все. Ничего более.

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

                                            Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                                              Цитата Wound @
                                              Стандартными средствами

                                              "Стандартные средства" - также непереностимы, т.к. в обоих случаях нужна дополнительная настройка консоли/терминала. Автора топика не интересует переносимость, его интересует венда. Ему надо удобнее и короче, а это _getch. Все надоело переливать из пустого в порожнее. Для себя я вопрос закрываю.

                                              Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                                                Цитата JoeUser @
                                                "Стандартные средства" - также непереностимы, т.к. в обоих случаях нужна дополнительная настройка консоли/терминала. Автора топика не интересует переносимость, его интересует венда. Ему надо удобнее и короче, а это _getch. Все надоело переливать из пустого в порожнее. Для себя я вопрос закрываю.

                                                Автор топика завтра перейдет на другой компилятор, отличный от Visual Studio, и создаст тему "У миня не компилируется код, говорит что не находит conio.h", в случае с системными функциями - такой проблемы не возникает.

                                                Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                                                  Цитата JoeUser @
                                                  А эффект тот же.
                                                  Тот же - от getchar.

                                                  Цитата Wound @
                                                  Автор топика завтра перейдет на другой компилятор, отличный от Visual Studio, и создаст тему "У миня не компилируется код, говорит что не находит conio.h"
                                                  GCC нормально компилит. Но под виндой, в Linux'е нет (что, в принципе, ожидаемо).

                                                  Цитата Qraizer @
                                                  Jin X, тебя это всё тут устраивает? Может быть перейдёте в отдельную тему?
                                                  Мне это интересно.
                                                  Но если тебя смущает всё это именно в этой теме, раздели на 2 части, там и продолжим :)

                                                  Сообщения были разделены в тему "Распространённые функции библиотеки"

                                                  Это сообщение было перенесено сюда или объединено из темы "long double 80 бит (Windows)"
                                                  M
                                                  Done
                                                  Сообщение отредактировано: Qraizer -
                                                    Цитата JoeUser @
                                                    Еврейский у тя подход :lol: Не ответив на мой вопрос, задаешь свой :lol:

                                                    Так я тебе ответил, открой заголовочный файл iomanip - там все реализации стандартных манипуляторов лежат. Выбери тот который тебе нужен, юзни его. Что тут не понятного?

                                                    Цитата JoeUser @
                                                    Ну примерно так будет:

                                                    Что это? А если полей класса у тебя с десяток? А если они при этом закрытые? А если нужно оперировать бинарными данными? Или считать из файла бинарные данные?

                                                    Потоки:
                                                    ExpandedWrap disabled
                                                      #include <iostream>
                                                      #include <iterator>
                                                      #include <algorithm>
                                                      #include <fstream>
                                                       
                                                      int main()
                                                      {
                                                         std::ifstream fin("main.cpp", std::ios_base::in | std::ios_base::binary);
                                                         std::ofstream fout("main.cpp.backup", std::ios_base::out | std::ios_base::binary | std::ios_base::trunc);
                                                       
                                                         std::cout << "Begin copy file..." << std::endl;
                                                         auto cout_buffer = std::cout.rdbuf();
                                                         std::cout.rdbuf(fout.rdbuf());
                                                       
                                                         std::cout << "===========Begin=============" << std::endl;
                                                         std::copy(std::istreambuf_iterator<char>(fin),
                                                                   std::istreambuf_iterator<char>(),
                                                                   std::ostream_iterator<char, char>(std::cout));
                                                         std::cout << std::endl << "============End==============" << std::endl;
                                                         fin.close();
                                                         fout.close();
                                                         std::cout.rdbuf(cout_buffer);
                                                         std::cout << "Done." << std::endl;
                                                        
                                                         std::cin.get();
                                                         return 0;
                                                      }

                                                    По моему довольно универсальное средство, явно удобнее сишных функций. Потому как Сишная функция может оперировать только '\0' строками и числами. А потоки могут оперировать всем, чем пожелаешь, могут расширяться. Допустим даже, если что то они не умеют, не состовит большого труда этому их научить. Сишные функции - захардкожены, и если что то не умеют делать, то учить их этому бессмысленно.
                                                    Соответственно io потоки удобнее Сишных функций.
                                                    Плюс ко всему плохой стиль смешивать Сишные функции с С++сными. Код становится вырвиглазным. И не безопасным.
                                                    О чем тут вообще можно спорить?
                                                    Сообщение отредактировано: Wound -
                                                      Цитата JoeUser @
                                                      К примеру, изобрази это манипуляторами потоков i/o:
                                                      ExpandedWrap disabled
                                                        char i = 12;
                                                        printf("%04d :: %0*x",i,4,i);

                                                      Ну будет чуть больше писанины. И что? Если ты пишешь мелкую простую прогу в пару сотен строк, то, конечно, и сишными функциями можно воспользоваться. Но если что-то более серьёзное, то преимущество потоков в их безопасности (ошибка "поменял тип или количество аргументов и забыл про форматную строку" с ними невозможна) с лихвой перекрывает несколько бОльшую многословность.

                                                      Добавлено
                                                      Короче, аргумент против сишного ввода-вывода ровно такой же, как и против динамической типизации в сравнении со статической. Но поскольку апологеты динамики, как правило, в принципе не понимают аргументы противоположной стороны, то, вангую, тут будет то же самое :D
                                                        Wound,OpenGL, вы не поняли сути спора, как я вижу. Ничего не имею против потоков i/o. Лишь говорю о том, что маска вывода у printf/sprint делает форматирование гораздо удобнее и лаконичнее, чем все эти std::hex, std::oct, std::setw, etc ... И не более. Никаких сравнений C vs C++.
                                                          Цитата JoeUser @
                                                          Лишь говорю о том, что маска вывода у printf/sprint делает форматирование гораздо удобнее и лаконичнее, чем все эти std::hex, std::oct, std::setw, etc .

                                                          Иными словами, речь идёт о сферическоваккумном удобстве форматирования стандартных типов и в полном отрыве от остальных характеристик? Ну ладно, тогда в таком случае я могу с тобой согласиться :D
                                                            Цитата OpenGL @
                                                            о сферическоваккумном удобстве форматирования стандартных типов

                                                            Да ладно? :lol: https://doc.rust-lang.org/std/fmt/
                                                              И к чему это тут? Если что, всё вышесказанное мной против сишного IO к расту не применимо - trait Debug ты можешь определить для своих типов, а форматная строка парсится во время компиляции, так что в вышеописанных случаях программа просто не скомпилится.
                                                                Цитата 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 пользователей:


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