Форум программистов, компьютерный форум CyberForum.ru

Что такое потоковые манипуляторы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вставка изображений в командную строку http://www.cyberforum.ru/cpp-beginners/thread561041.html
Ребят, помогите, мне надо реализовать вставку изображений в командную строку, а также интересует вставка анимации, если такое возможно..Я новичок в с++, вроде на форуме посмотрел, не нашел тем по этому поводу..
C++ создания поля на OpenGL Подскажите как создать (с помощью каких команд и фун-ий) поле 10 на 10 что бы потом можно было его использовать, как поле для игры в морской бой, http://www.cyberforum.ru/cpp-beginners/thread561029.html
Задание размера числа C++
Добрый день. Подскажите пожалуйста как можно задать целое положительное число в С++ длиною ровно 39 бит. Заранее благодарю.
C++ Как обработать исключение переполнения стека
Если не трудно, то привидите пример функции, обрабатывающей перехватку исключения переполнения стека.
C++ Не могу сделать программу, горю на экзамене, спасибо большое заранее. http://www.cyberforum.ru/cpp-beginners/thread561002.html
Заданы элементы двух массивов а1,а2,…,а10 и b1,b2,…,b10. Косинус угла между этими двумя векторами определяется по формуле: cosY=(a,b)/(|a|*|b|), где скалярное произведение (a,b)=∑_(i=1)^10 a_i*b_i, модуль вектора |a|=√(∑_(i=1)^10) a_i^2
C++ Удалить комментарии вида "/* ... */" Доброе время суток! Прошу помочь мне как запилить такое "/* и */" в условие. Дело в том что нужно удалить из строки прочитанного файла комментарии вида "/* ... */". Вообщем вот такая шняга: #include "stdafx.h" #include <iostream> #include <math.h> #include <locale> #include <string> using namespace std; подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
28.04.2012, 23:17     Что такое потоковые манипуляторы
ну в дебаге же можно посмотреть. все работает за счет правильной перегрузки оператора << для потока:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
std::cout << std::endl;
приводит к вызову
_Myt& __CLR_OR_THIS_CALL operator<<(_Myt& (__cdecl *_Pfn)(_Myt&))
{ // call basic_ostream manipulator
  _DEBUG_POINTER(_Pfn);
  return ((*_Pfn)(*this));
}
т.е. это была перегрузка оператора для указателя на функцию определенной сигнатуры.
 
вызов
std::cout << std::setw(10);
 
приводит к другой перегрузке:
template<class _Elem,
    class _Traits,
    class _Arg> inline
    basic_ostream<_Elem, _Traits>& __CLRCALL_OR_CDECL operator<<(
        basic_ostream<_Elem, _Traits>& _Ostr, const _Smanip<_Arg>& _Manip)
    {   // insert by calling function with output stream and argument
    (*_Manip._Pfun)(_Ostr, _Manip._Manarg);
    return (_Ostr);
    }
 
потому что фозвращаемый тип функции std::setw(streamsize)
какой-то такой:
_Smanip<_Arg> - а эта объект, которому при построении передали размер.
вот примерно таким макаром все и работает. за счет перегрузки функций.
 
Текущее время: 04:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru