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

Собственный манипулятор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести числа со специальным форматом http://www.cyberforum.ru/cpp-beginners/thread943171.html
Всем привет! Есть задание: "Напишите программу, считывающую из файла числа, разделенные пробелами, и выводящую в другой файл числа, используя научный формат и точность, равную восьми в четырех полях по двадцать символов в строке". Что хотят в этом задании? Ведь не вместить 4 поля в одну строку из 20 символов (если точность 8 - это не вмещается).
C++ rand(time(NULL) Необходимо получить диапозон случайных чисел от 1 до 6. Я это пытаюсь делать вот таким образом void main(){ srand(time(NULL)); int cub1=rand()%(1+5); int cub2=rand()%(1+5); http://www.cyberforum.ru/cpp-beginners/thread943170.html
Непонятный вывод значений синуса C++
Есть вот такой код: #include <iostream> #include <cmath> using namespace std; const double pi = 3.14159265358979; int main() { cout <<sin(pi) <<endl
C++ Не получается заполнить массив целыми числами
Почему результат при выводе не тот, который должен быть? Должно получится 2 4 6 8 10 12 14 16 18 20, а на самом деле 0 2 2 2 2 2 2 2 2 2 2? #include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { array<int> ^data = gcnew array<int>(10);
C++ Вывести на экран таблицу значений функции и ее разложение в ряд http://www.cyberforum.ru/cpp-beginners/thread943119.html
Задали в универе. Даже незнаю как подобные задачи решаются.
C++ Ругается на шаблон Не пойму , но компилятор ругается на эту функцию : bool contains(const &T); И пишет что int не поддерживается по умолчанию. Вот полный код: #ifndef ArrayList_H #define ArrayList_H подробнее

Показать сообщение отдельно
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
26.08.2013, 20:22  [ТС]     Собственный манипулятор
В общем прочитал раздельчик про манипуляторы и там написано от что, манипуляторы это функции манипуляторы, можно записать отак:
C++
1
2
3
4
5
cout <<x;
cout.flush();
cout <<y;
cin.unsetf(ios_base::skipws);
cin >>x;
Такая запись затрудняет понимание кода, поетому применяют манипуляторы которые можно вставить в << отак:
C++
1
2
cout <<x<<flush()<<y;
cin >>noskipws>>x;
Так просто код понятней становится, ну и для создания пользовательских манипуляторов, нужно от по такой схеме их создавать, в книге так советуют создавать:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
using std::cout;
using std::endl;
using std::ostream;
using std::dec;
using std::hex;
#include <sstream>
using std::ostringstream;
 
void natob (int n, ostringstream& ost)
{
    if (n>1)
    natob(n/2,ost);
    ost<<n%2;
}
 
class based;
 
struct based_manip
{
    based& b;
    int oc;
    int val;
    based_manip(based& a,int b, int c):b(a),oc(b),val(c){}
};
 
class based
{
    friend ostream& operator<<(ostream& os, based_manip bm);
public:
    based_manip& operator()(int a, int b){return based_manip(*this,a,b);}
 
};
 
ostream& operator<<(ostream& os, based_manip bm)
{
    ostringstream ost;
    if(bm.oc==2) natob(bm.val,ost);
    else if(bm.oc==10) ost <<dec<<bm.val;
    else if(bm.oc==16) ost <<hex<<bm.val;
    return os <<ost.str();
}
 
int main()
{
    based based1;
    cout <<based1(2,9)<<endl;
 
    return 0;
}
В общем так от делать, код конечно запутанный и многие новички не разберут что тут происходит, кто не разберет , то можно просто как товарищ grizlik78, советовал из функции вернуть строку и можно так же как я просто все в поток закинуть через функцию, в общем результат один и тот же, так что получается свой манипулятор тема не актуальная.
 
Текущее время: 18:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru