Си++

Просмотр 5 сообщений - с 61 по 65 (из 65 всего)
  • Автор
    Сообщения
  • #1944256
    Brain
    Участник

    2sc.Спасибо за разьяснения.

    #1944532
    Дикий Билл
    Участник

    Мне вот что непонятно. Почему все используют cout вместо старой доброй printf?

    #1944533
    Brain
    Участник

    [quote name='Дикий Билл'] Мне вот что непонятно. Почему все используют cout вместо старой доброй printf? [/quote]printf – это функция. Тобишь из эры процедурных языков. А cout – Это уже ООП. Хотя нечего не мешает использовать printf и в Спп.

    #1944561
    -sc-
    Участник

    [quote name='Дикий Билл'] Мне вот что непонятно. Почему все используют cout вместо старой доброй printf? [/quote]Добавлю. Преимущества (основные):- безопасность с точки зрения типов- общий стиль для вывода как объектов встроенных типов, так и определенных пользователем.С первым по моему все понятно:char x;…printf(“Danger! %s”, x) Должно быть %c. Как минимум получим че попало на консоли, как максимум сможем выполнить свой кусок кода ну или хотя бы получить дамп какой-нибудь памяти))Со вторым пример:#include #include #include #include #include #include // подопытный класс А// имеет конструктор с параметрами, два члена и две ф-ции доступа к нимclass A{int id;std::string name;public:A(int id, const std::string name) :id(id), name(name){}int Id()const{ return id; }const std::string& Name()const{ return name; }};// оператор сдвига (вывода) в поток для класса Аstd::ostream& operator << (std::ostream& os, const A& a){os << a.Id() << "\t" << a.Name() << std::endl;return os;}// точка входаint main(int argc, char* argv[]){// здесь объект а класса А выводит себя на консольA a(1, "Vasya");std::cout << a;// а здесь уже в файл{std::ofstream ofs("somefile");ofs << a;}// a здесь в буфер строкиstd::ostringstream ostr;ostr << a;// проверим что в буфереstd::cout << ostr.str();// теперь создадим несколько объектовstd::vector va;va.push_back(A(1, “Name1”));va.push_back(A(2, “Name2”));va.push_back(A(3, “Name3”));// и выведем каждый на консольstd::copy(va.begin(), va.end(), std::ostream_iterator(std::cout, “”)); return 0;}Удобно!))

    #1791426
     VaIerik
    Участник

     

Просмотр 5 сообщений - с 61 по 65 (из 65 всего)
  • Для ответа в этой теме необходимо авторизоваться.