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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
advaito
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 33
#1

Перегрузка констант true и false - C++

17.03.2014, 11:48. Просмотров 386. Ответов 9
Метки нет (Все метки)

помогите, а то не могу разобраться =((
перегрузка констант true и false: обращение к экземпляру класса дает значение true, если строка не пустая, иначе false.

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
#include "stdafx.h"
#include "iostream"
#include <string>
#include <algorithm>
#include "vector"
using namespace std;
 
 class stroki
 { 
 public: 
     stroki(string line,int n)
     {
         stroki::line=line;
         stroki::n=n;
     };
     string get_line(stroki &ss)
     {
         return ss.line;
     };
     /*string get_line(stroki &ss)
     {
         return ss.line;
     };*/
     
     int count_spaces(stroki &ss)
     {
         return count(ss.line.begin(),ss.line.end(),' ');
     };
 private:
     string line;
     int n;
  };  
 
 int main()
 {
     vector<stroki>st;
     string temp="My, r! O.  ! b.  o, T, ";
     stroki s1(temp,temp.length());
     string temp1="My, s! ?T !r..  . I! n, G.";
     stroki stt(temp1,temp1.length());
     string s="";
 
 
     st.push_back(s1);
     st.push_back(stt);
 
     for(int i=0;i<st.size();++i)
     {  
         cout<<st[i].get_line(st[i])<<endl;
         cout<<st[i].count_spaces(st[i])<<endl;
     }
    
 
    
 
    
        for(int i=0;i<st.size();++i,cout<<endl)
     {  
        
         for(int ii=0;ii<st[i].get_line(st[i]).length();++ii)
         {
             if(isupper(st[i].get_line(st[i])[ii]))
             cout<<char((int)st[i].get_line(st[i])[ii]+32);
                     else cout<<char((int)st[i].get_line(st[i])[ii]-0);
         }
        }
 
 
 
        cout<<endl;
        cout<<"____1 "<<temp1<<" 1____";
 
         for(int i=0;i<temp1.length();++i)
         {
             if(!ispunct(temp1[i]))s+=temp1[i];
             else cout<<temp1[i]<<endl;
         }
         temp1=s;
        cout<<"____1 "<<temp1<<" 1____";
        
     system("Pause");
     return 0;
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2014, 11:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка констант true и false (C++):

Глюк false = true == true; - C++
Возник глюк, пишу: result.isPlus = this-&gt;isPlus == numberBigSize.isPlus; Поля &quot;this-&gt;isPlus&quot; и &quot;numberBigSize.isPlus&quot; равны true, но...

true and false - C++
Уважаемые, программисты! Помогите, пожалуйста, с программой. Написать программу, которая печатает True или False в зависимости от...

False,True - C++
Помогите пожалуйста. Составить программу, печатающую TRUE, если указанное высказывание является истинным, и FALSE в противном случае. ...

Задача на true or false - C++
You have the implement a function, with the following signature: ABCheck(str). The argument str is of type string. The function...

вывод true и false - C++
Доброгов сем времени суток. Хотелось бы попросить помощи в решении этого задания, под цифрой 2, справа. треугольник у меня получился...

С++. вывод true/false - C++
помогите пожалуйста, почему не робит прога. должна вывести 1 если символ введеный с клавы гласная буква русского алфавита, иначе 0. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
John Prick
778 / 711 / 131
Регистрация: 27.07.2012
Сообщений: 2,043
Завершенные тесты: 3
17.03.2014, 12:27 #2
C++
1
2
3
4
5
6
7
8
9
class stroki
{
public:
    operator bool() const
    {
        return (line.size() != 0);
    }
    /* ... */
};
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
17.03.2014, 12:30 #3
John Prick, еще не помешает оператор сделать explicit, а в проверке вызывать метод empty() вместо size().
zss
Модератор
Эксперт С++
6358 / 5922 / 1920
Регистрация: 18.12.2011
Сообщений: 15,220
Завершенные тесты: 1
17.03.2014, 12:42 #4
А как таким оператором пользоваться?
John Prick
778 / 711 / 131
Регистрация: 27.07.2012
Сообщений: 2,043
Завершенные тесты: 3
17.03.2014, 12:43 #5
Цитата Сообщение от Tulosba Посмотреть сообщение
а в проверке вызывать метод empty() вместо size()
Здесь я исходил из того, что там может использоваться не std::string. size() в этом случае, наверное, понятнее для ТС. А если std::string используется, то да, проще вызвать empty().

Цитата Сообщение от Tulosba Посмотреть сообщение
не помешает оператор сделать explicit
Ну это тема широкая. Не знаю, как там стандарт это трактует, но например VC++6.0 explicit для этого оператора не компилирует. Да и в литературе я встречал только более сложные (мягко говоря) способы избежать неявного преобразования в типы, отличные от bool. Но они явно не для ТС.

Добавлено через 35 секунд
Цитата Сообщение от zss Посмотреть сообщение
А как таким оператором пользоваться?
C++
1
if (st) { /*...*/ }
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
17.03.2014, 12:44 #6
John Prick, установка explicit для операторов преобразования работает только начиная с C++11.
John Prick
778 / 711 / 131
Регистрация: 27.07.2012
Сообщений: 2,043
Завершенные тесты: 3
17.03.2014, 12:47 #7
Tulosba, спасибо, буду знать.

Не по теме:

Я пока ещё в VC++6.0 копаюсь

DrOffset
17.03.2014, 13:19
  #8

Не по теме:

Цитата Сообщение от John Prick Посмотреть сообщение
Я пока ещё в VC++6.0 копаюсь
Лучше ее там же и закопать. Придется потом много переучиваться.

John Prick
17.03.2014, 13:25
  #9

Не по теме:

DrOffset, ну так я же не балуюсь. Такая работа у меня.

DrOffset
17.03.2014, 13:29     Перегрузка констант true и false
  #10

Не по теме:

John Prick, ну тогда - понимаю и сочувствую. У нас тоже есть проекты на gcc 2.9, примерный ровесник VC6 со своим набором приколов.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2014, 13:29
Привет! Вот еще темы с ответами:

Собственная функция true, false - C++
Приветствую, возникли проблемы с выполнением кода. Сначала показывал вроде правильно, потом я начал его исправлять, и вообще не показывает...

Почему не меняется true/false? - C++
Добрый день! Написал простенькую программу с перегрузкой типов. 24 часовая система переводится в 12 часовую (с pm/am). У меня не...

Задание со строками на true or false - C++
1. Implement a function with the following signature: ExOh(str) str is of type string. The function should return true if there...

Значения True или False - C++
Состаить линейную программу, выводящую значение True, если указанное высказывание является истинным, и False- в противном случае: Квадрат...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.03.2014, 13:29
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru