Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/19: Рейтинг темы: голосов - 19, средняя оценка - 4.58
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
1

Перегрузка операторов вывода для русификации строк

19.02.2010, 17:44. Показов 3727. Ответов 38
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include <iostream>
#include <string>
#include <windows.h>
 
using namespace std;
 
friend ostream operator << (ostream &in, const char text[])
{
    char *s = new char[500];
    CharToOem(text,s);
    in << s;
    delete s;
    return in;
}
 
void print(const char text[])
{
    char *s = new char[500];
    CharToOem(text, s);
    printf("%s\n", s);
    delete s;
}
 
int main()
{
    print("Охохо ііі");    
    system("pause");
    return 0;
}
Проблема в том, что я хочу перегрузить оператор "<<" но не знаю как, т.к. использовать функцию print() не очень удобно, как оказалось..
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2010, 17:44
Ответы с готовыми решениями:

Перегрузка операторов умножения и присваивания для строк.
Помогите, пожалуйста, реализовать перегрузку операторов умножения и присваивания для такого задания...

Перегрузка операторов ввода и вывода
Добрый вечер! Помогите с задачкой.Я создал класс очередь и класс массив очередей.задача готова, но...

Перегрузка операторов ввода вывода
в .h файле сделал объявление inline ostream&amp; operator &lt;&lt;(ostream&amp;, const Proc&amp;); inline istream&amp;...

Перегрузка операторов ввода и вывода
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class ComplexNumber { private:...

38
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
19.02.2010, 18:07 2
C++
1
2
3
4
5
6
7
8
ostream& operator << (ostream& out, LPCWSTR text)
{
    char *s = new char[500];
    CharToOem(text,s);
    out << s;
    delete s;
return out;
}
Никогда такого не делал. по крайне мере такой код запустился...
1
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
19.02.2010, 18:31  [ТС] 3
а у меня - нет
wxDev-C++
0
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
19.02.2010, 18:32 4
VS 2008
Ну даже так... в чем ошибка? Может не все так страшно?
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
19.02.2010, 18:39  [ТС] 5
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
#include <iostream>
#include <string>
#include <windows.h>
 
using namespace std;
 
ostream& operator << (ostream& out, const char text[])
{
    char *s = new char[500];
    CharToOem(text,s);
    out << s;
    delete s;
    return out;
}
 
void print(const char text[])
{
    char *s = new char[500];
    CharToOem(text, s);
    printf("%s\n", s);
    delete s;
}
 
int main()
{
    print("Охохо ііі");
//    cout << "ПАПар";
    system("pause");
    return 0;
}
хавает, но если убрать комент то вылет на том-же месте..
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
19.02.2010, 18:46 6
outoftime, если я не ошибаюсь, вроде бы нельзя перегружать операторы для встроенных типов данных

Добавлено через 37 секунд
Напиши свой строковый класс, и для него перегружай вывод
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
19.02.2010, 19:07 7
В gcc вот так работает:
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
#include <iostream>
#include <string>
#include <windows.h>
    
class RuText {
public:
    RuText() : p(NULL) {}
    RuText(const std::string& s){
        int len = s.size();
        p = new char [len + 1];
        CharToOem(s.c_str(), p);
    }
    ~RuText(){
        if ( p != NULL ){
            delete [] p;
            p = NULL;
        }
    }
    friend std::ostream& operator << (std::ostream& ost, const RuText& rt){
        ost << rt.p;
        return ost;
    }   
private:
    char *p;
};
 
int main(){
    std::cout << RuText("Хело, мир!") << std::endl;
    std::cout << RuText("Гудбай, мир!") << std::endl;
    return 0;
}
А мелкомягкий CL не нашёл CharToOem
Код
rutext.obj : error LNK2019: unresolved external symbol __imp__CharToOemA@8 refer
enced in function "public: __thiscall RuText::RuText(class std::basic_string<cha
r,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0RuTex
t@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
rutext.exe : fatal error LNK1120: 1 unresolved externals
Где-то тут на форуме было, как с этим бороться, лень искать...

Добавлено через 9 минут
В прочем, если в MS VS 2005 создать проект "console application", то
вот так
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
// rutext.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <string>
#include <windows.h>
 
class RuText {
public:
    RuText() : p(NULL) {}
    RuText(const std::string& s){
        int len = s.size();
        p = new char [len + 1];
        CharToOemA(s.c_str(), p);
    }
    ~RuText(){
        if ( p != NULL ){
            delete [] p;
            p = NULL;
        }
    }
    friend std::ostream& operator << (std::ostream& ost, const RuText& rt){
        ost << rt.p;
        return ost;
    }   
private:
    char *p;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::cout << RuText("Хело, мир!") << std::endl;
    std::cout << RuText("Гудбай, мир!") << std::endl;
    system("PAUSE");
    return 0;
}
всё работает.
1
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
19.02.2010, 19:07  [ТС] 8
чем это: RuText("Хело, мир!")
отличается от этого: print("Охохо ііі")
удобности не придает, ладно всем спасибо, вижу что никак, отановлять на print()
0
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
19.02.2010, 19:20 9
а если сделать print(const char* x, ...) чтобы она могла принимать много строк. так не будет удобнее?
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
19.02.2010, 19:22 10
outoftime, например тем, что можно вот так
C++
1
std::cout << "Some russian text: " << RuText("Бла бла бла") << " And some more..." << std::endl;
делать. А с Вашим print() такое не прокатит.
0
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
19.02.2010, 21:13  [ТС] 11
insideone, чем это удобнее?
easybudda, я просто покажу код, и вы сами все поймете (наверное)
my.hpp
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
#include <iostream>
#include <string.h>
#include <windows.h>
 
const int tSleep = 1500;
 
void print(const char s[])
{
    char *text = new char[strlen(s)+5];
    CharToOem(s, text);
    printf("%s", text);
    delete text;
}
 
namespace my
{
    int exit()
    {
        int exit = 0;
        while (exit != '2')
        {
            std::cin.clear();
            print("Виберiть дiю:\n\n");
            print("1 - вийти\t2 - продовжити\n");
            exit = getch();
            if (exit == '1')
            {
                system("cls");
                print("завершення..");
                Sleep(tSleep);
                return 1;
            }
            if (exit != '2')
            {
                system("cls");
                print("\nПомилка введення\tспробуйте ще раз ");
                Sleep(tSleep);
            }
            system("cls");
        }
        return 0;
    }
}
helper.cpp
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
#include <iostream>
#include <windows.h>
#include <conio.h>
#include "my.hpp"
 
using namespace std;
 
inline bool check(int &a) { return (a > 0 && a < 4); }
 
int main()
{
    int key;
    do 
    {
        system("cls");
        print("Виберiть дiю:\n\n");
        print("1 - запустити програму переведення чисел з однiєї системи числення в iншу;\n\n");
        print("2 - запустити програму переведення суми, рiзницi та добутку в прямий, обернений та доповняльний коди;\n\n");
        print("3 - вийти.\n");
        while ( !check(key = getch()-'0') ) { cin.clear(); print("\nПомилка введення\tспробуйте ще раз: "); }
        if (key == 1){system("cls"); system("a_in_b.exe");}
        if (key == 2){system("cls"); system("bynary.exe");}
        if (key == 3){system("cls"); print("завершення.."); Sleep(tSleep);}
    }
    while (key != 3);    
}
bynary.cpp
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
#include <string>
#include <conio.h>
#include <windows.h>
#include <algorithm>
#include "my.hpp"
 
#define ABS(a) ( (a) < 0 ? -(a) : a )
#define FOR(i,a,b) for (int i = a, _n(b); i < _n; ++i)
 
using namespace std;
 
void Show(char *, int);
 
int main()
{
    while (1)
    {
        system("cls");
        int a, b;
        print("Введiть значення А: ");
        cin >> a;
        print("Введiть значення В: ");
        cin >> b;
        
        Show("A + B:", a+b);
        Show("A - B:", a-b);
        Show("B - A:", b-a);
        Show("A * B:", a*b);
        Show("A / B:", a/b);
        Show("B / A:", b/a);
             
        if (my::exit()) break;
    }
}
 
void Show(char *s, int n)
{
    cout << endl << s << endl;
    string d, D = "";
    d = (n < 0) ? "11." : "00.";
    n = ABS(n);
 
    print("в прямому кодi:       ");
    while (n) { D += (n&1)?'1':'0'; n >>= 1; }
    reverse(D.begin(),D.end());
    while (D.size() == 0) D = "0";
    cout << d << D << endl;
    
    print("в оберненому кодi:    ");
    cout << d;
    if (d == "11.")
    {
        FOR(i,0,D.size()) { cout << (D[i] == '0')?'1':'0'; }
        cout << endl;
    }
    else cout << "\b\b\b---" << endl;
    
    print("в доповняльному кодi: ");
    if (d == "11.")
    {
        int bot = D.size()-1;
        FOR(i,0,D.size()) D[i] = (D[i] == '0')?'1':'0';
        while (D[bot] == '1') { D[bot--] = '0'; if (bot < 0) break; }
        if (bot < 0) D = '1' + D;
        else D[bot] = '1';
    }
    cout << d << D << "\n\n";
}
a_in_b.cpp
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
#include <windows.h>
#include <conio.h>
#include "my.hpp"
 
#define FOR(i,a,b) for (int i = a, _n(b); i < _n; ++i)
 
using namespace std;
 
//опис констант-----------------------------------------------------------------
const int base = 1000*1000;         //база числа в довгій арифметиці
 
//опис функцій------------------------------------------------------------------
void Menu();
void Notation(string &, int &, int &);
vector <int> NotationFrom(string, int &);
vector <int> NotationTo(vector <int>, int &);
string NotationDiv(string, int &, int &);
void Normalization(string &);
vector <int> Div(vector <int>, int, int &);
vector <int> Mult(vector <int>, int);
vector <int> Sum(vector <int>, vector <int>);
void Up(string &);
int Check();
int IsDigit(string &);
inline int IsPoint(char &s) { return s == '.'; }
 
//MAIN()------------------------------------------------------------------------
int main()
{
    Menu();
    return 0;
}
 
//меню програми----------------------------------------------------------------
void Menu()
{
    while (1)
    {
        int from, to;
        string s;
        print("Введiть початкову систему числення [2..36]: ");
        while( !(from = Check()) ) print("помилка введення\n\nспробуйте ще раз: ");
        cout << endl; print("Введiть кiнцеву систему числення [2..36]:   ");
        while( !(to = Check()) ) print("помилка введення\n\nспробуйте ще раз: ");
        print("\nВведiть число:                              ");
        cin >> s;
        cout << endl;
 
        Notation(s, from, to);
            
        if (my::exit()) break;
    }
}
 
//основна функція---------------------------------------------------------------
void Notation(string &s, int &from, int &to)
{
    //переводимо цілу частину в десяткову систему числення
    vector <int> res;
    Up(s);
    int count = 0;
    FOR(i,0,s.size()) 
    {
        if ( !IsPoint(s[i]) ) ++count;
        if ( IsPoint(s[i]) ) break;
    }    
    res = NotationFrom(s.substr(0,count), from);
    print("Десяткове представлення:\n");
    for (int i(res.size()-1); i > -1; --i)
        cout << res[i];
 
    //переводимо дробову частину в десяткову систему числення
    double dd = 0,
        base = 1;
    string ds = "", d = "";
    if (count < s.size())
    {
        s = s.substr(count+1, s.size()-count);
        FOR(i,0,s.size()) dd += (base /= from) * (s[i] - '0');
        FOR(i,0,10)
        {
            ds += int(dd *= 10) + '0';
            dd -= int(dd);
        }
        Normalization(ds);
        if(ds.size()) cout << "." << ds << endl;
        d = NotationDiv(s, from, to);
    }
    
    //переводимо число в бажану систему числення
    print("\n\nПредставлення числа в системi з основою "); 
    cout << to << ":" << endl;
    res = NotationTo(res, to);
    s.clear();
    for (int i(res.size()-1); i > -1; --i)
        s += ( (res[i]/10) ? (res[i] - 10 + 'A') : (res[i] + '0') );
    s += '.' + d;
    Normalization(s);
 
    cout << s << endl << endl;
}
 
//функція для переведення числа в 10-ву систему числення------------------------
vector <int> NotationFrom(string s, int &from)
{
    vector <int> res, d, b;
    res.push_back(0);
    b.push_back(1);
    for (int i(s.size()-1); i > -1; --i)
    {
        d.clear();
        d = Mult(b, (isalpha(s[i])) ? (int(s[i] - 'A') + 10) : (int(s[i] - '0')));
        res = Sum(res, d);
        b = Mult(b, from);
    }
    return res;
}
 
//функція для переведення числа в систему числення з основою 2..36--------------
vector <int> NotationTo(vector <int> a, int &to)
{
    vector <int> res;
    int carry = 0;
    while (a.size() != 1 || (a.back() != 0 && a.size() == 1) )
    {
        a = Div(a, to, carry);
        res.push_back(carry);
    }
    return res;
}
 
//переведення дробової частини числа
string NotationDiv(string s, int &from, int &to)
{
    string res = "";
    double d = 0, base = 1;
    FOR(i,0,s.size()) d += (base /= from) * (s[i] - '0');
    FOR(i,0,10)
    {
        res += int(d *= to) + '0';
        d -= int(d);
    }
    return res;
}
 
//ділення довгого на коротке, повернення результуючого вектора на остачі--------
vector <int> Div(vector <int> a, int b, int &carry)
{
    carry = 0;
    for (int i = (a.size()-1); i > -1; --i)
    {
        long long cur = carry * base + a[i];
        a[i] = int (cur / b);
        carry = int (cur % b);
    }
    while (a.size() > 1 && a.back() == 0) a.pop_back();
    return a;
}
 
//множення довгого на коротке, повернення результуючого вектора-----------------
vector <int> Mult(vector <int> a, int n)
{
    int carry = 0;
    for (int i = 0, _n(a.size()); i < _n || carry; ++i)
    {
        if (i == a.size()) a.push_back(0);
        long long cur = carry + a[i] * n;
        a[i] = (int) cur % base;
        carry = (int) cur / base;
    }
    return a;
}
 
//додавання 2-ох довгих, повернення результуючого вектора-----------------------
vector <int> Sum(vector <int> a, vector <int> b)
{
    if (a.size() < b.size()) swap(a,b);
    int carry = 0;
    for (int i = 0, _n(a.size()); i < _n || carry; ++i)
    {
        if (i == a.size())  a.push_back(0);
        if (i == b.size())  b.push_back(0);
        long long cur = a[i] + b[i] + carry;
        a[i] = (int) cur % base;
        carry = (int) cur / base;
    }
    return a;
}
 
//переведення стрічки у верхній регістр-----------------------------------------
void Up(string &s) { FOR(i,0,s.size()) if (isalpha(s[i])) s[i] += (s[i] >= 'a') ? ('A'-'a') : (0);  }
 
//перевірка на допустимий діапазон значень--------------------------------------
int Check()
{
    string s;
    cin >> s;
    stringstream tmp;
    tmp << s;
    int res;
    tmp >> res;
    return (res <= 36 && res >= 2 && IsDigit(s)) ? (res) : (0);
}
 
//перевірка чи являеться стрічка цілим числом-----------------------------------
int IsDigit(string &s)
{
    FOR(i,0,s.size()) if (s[i] < '0' || s[i] > '9') return 0;
    return 1;
}
 
//нормалізація стрічки
void Normalization(string &s)
{
    int count = 0;
    while (s[s.size()-count-1] == '0') ++count;
    if ( s[s.size()-count-1] == '.') ++count;
    s = s.substr(0, s.size() - count);
}
0
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
19.02.2010, 21:20 12
Цитата Сообщение от outoftime Посмотреть сообщение
insideone, чем это удобнее?
Вместо << - запятая - вот почти вся разница. Почему нет?
1
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
19.02.2010, 21:23  [ТС] 13
я надеюсь вы не очень испугались)) здесь без 100 грам не обойтись..

Добавлено через 49 секунд
insideone, приведите мне пример, на моем коде
0
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
19.02.2010, 21:26 14
C++
1
2
3
4
print("Виберiть дiю:\n\n");
print("1 - запустити програму переведення чисел з однiєї системи числення в iншу;\n\n");
print("2 - запустити програму переведення суми, рiзницi та добутку в прямий, обернений та доповняльний коди;\n\n");
print("3 - вийти.\n");
C++
1
2
3
4
5
6
print(
   "Виберiть дiю:\n\n", // запятая вместо <<
   "1 - запустити програму переведення чисел з однiєї системи числення в iншу;\n\n",
   "2 - запустити програму переведення суми, рiзницi та добутку в прямий, обернений та доповняльний коди;\n\n",
   "3 - вийти.\n"
);
1
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
19.02.2010, 21:36  [ТС] 15
insideone, а, в этом смысле.. это мне не мешает, вот если-бы print()-ом можно было-бы выводить значения (так как в printf()), вот это уже другое дело..

Добавлено через 2 минуты
да, и если я не ошибаюсь ваш пример можно заменить на:
C++
1
2
3
4
5
6
print(
   "Виберiть дiю:\n\n"
   "1 - запустити програму переведення чисел з однiєї системи числення в iншу;\n\n"
   "2 - запустити програму переведення суми, рiзницi та добутку в прямий, обернений та доповняльний коди;\n\n"
   "3 - вийти.\n"
);
0
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
19.02.2010, 21:41 16
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
 
class rus_ostream{
    ostream* out;
public:
    rus_ostream(){ out = &cout;};
    rus_ostream& operator <<(const char* text)
    {
        char* s = new char[500];
        CharToOemA(text, s);
        (*out) << s;
        delete s;
        return *this;
    }
} rcout;
 
int main(){
    rcout << "Привет мир!";
return 0;
}
Не знаю.... Вывело нормально Ничего не понимаю я короче в смысле жизни и все такое)
1
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
19.02.2010, 21:41  [ТС] 17
insideone, еще раз спасибо, а то я написал функцию и сам до сих пор полностью не понимаю какой обьем работы она может сделать))

ваш фрагмент заменил на:
C++
1
2
3
4
5
6
print(
            "Виберiть дiю:\n\n"
            "1 - запустити програму переведення чисел з однiєї системи числення в iншу;\n\n"
            "2 - запустити програму переведення суми, рiзницi та добутку в прямий, обернений та доповняльний коди;\n\n"
            "3 - вийти.\n"
        );
спасибо за подсказку, еще что-то видите?
0
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
19.02.2010, 21:47 18
Цитата Сообщение от outoftime Посмотреть сообщение
спасибо за подсказку, еще что-то видите?
исчерпала себя))
1
║XLR8║
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
19.02.2010, 22:25  [ТС] 19
insideone, меня осенило!!! с вашей помощью, я понял как создать клас, который будет полным заменителем cout, мне просто надо переписать тоже для всех типов в заголовочном файле..

Добавлено через 20 минут
insideone, еще один вопрос:
как перегрузить std::endl для нового класа??

Добавлено через 10 минут
и как перевести один символ а не всю строку

Добавлено через 18 секунд
имеется в виду в кирилицу
0
Автор FAQ
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
19.02.2010, 22:30 20
Цитата Сообщение от outoftime Посмотреть сообщение
insideone, еще один вопрос:
как перегрузить std::endl для нового класа??
C++
1
2
3
4
    rus_ostream& operator <<(rus_ostream& x){
        (*out) << std::endl;
    return *this;
    }
C++
1
rcout << "Привет мир!" << rcout << "Пока мир!";
Может не шибко красиво и может даже не правильно, но по крайне мере удобно.


Цитата Сообщение от outoftime Посмотреть сообщение
и как перевести один символ а не всю строку
Ну а это не тоже самое что переводить строку в котором 1 символ... или как?
1
19.02.2010, 22:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.02.2010, 22:30
Помогаю со студенческими работами здесь

Перегрузка операторов ввода\вывода
Вот такой простенький пример описан во многих постах, есть в некоторых видео но у меня в...

Перегрузка операторов ввода/вывода
Вроде сделал, но не работает перегрузка оператора ввода. #include &quot;stdafx.h&quot; #include...

Перегрузка операторов ввода-вывода
Доброго времени суток! Почему перестал работать &gt;&gt; оператор для стандартного типа char....

Перегрузка операторов ввода/вывода.
Класс комплексных чисел. Нужно чтобы программа выводила и вводила в таком виде (функции in и out):...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru