18 / 18 / 24
Регистрация: 21.06.2014
Сообщений: 147
1

Перегрузка операций

06.02.2015, 12:04. Показов 1094. Ответов 3
Метки нет (Все метки)

Не могу понять в чем ошибка. Нужно вводитьномер в формате (123) 456-789
Но почему то только возвращает число 123


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
#include <iostream>
 
using namespace std;
 
class PhoneNumber
{
    friend ostream &operator<<(ostream &, const PhoneNumber &);
    friend istream &operator>>(istream &, PhoneNumber &);
    public:
    void getPtintf()
    {
        cout<<areaCode<<" "<<exchange<<" "<<line;
    }
    private:
        char areaCode[4];
        char exchange[4];
        char line[5];
};
 
ostream &operator<<(ostream &output, const PhoneNumber &num)
{
    output<<"(" <<num.areaCode<<") "
    <<num.exchange<<"-"<<num.line;
 
    return output;
}
 
istream &operator>>(istream &input, PhoneNumber &num)
{
    input.ignore();
    input.getline(num.areaCode, 4);
    input.ignore(2);
    input.getline(num.exchange, 4);
    input.ignore();
    input.getline(num.line, 5);
 
    return input;
}
 
 
int main()
{
    PhoneNumber phone;
 
    cin>>phone;
 
    cout<<phone<<endl;
 
    phone.getPtintf();
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2015, 12:04
Ответы с готовыми решениями:

Перегрузка Операций C++
Прошу помочь с кодом(а именно задание &quot;е&quot;). Буду очень благодарен! Создать базовый класс...

Перегрузка операций
Данная программа выполянет операции с дробями. Но у меня возникла проблема. Я создал сервисную...

Перегрузка операций
Начал изучать перегрузку операций, и чего-то вроде не понял или что... Вообщем не могу понять чего...

Перегрузка операций
Здравствуйте. Объясните механизма операции инкремента. Как работают эти строки: Counter(int c) :...

3
Модератор
Эксперт С++
12458 / 10017 / 6030
Регистрация: 18.12.2011
Сообщений: 26,820
06.02.2015, 12:10 2
Цитата Сообщение от Kommersantt Посмотреть сообщение
input.getline(num.areaCode, 4);
Читает не более 3 символов и пропускает все до конца строки.
Надо читать строку во что-то подлиннее, а потом парсить в отдельные элементы.
0
7167 / 6142 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
06.02.2015, 15:13 3
Лучший ответ Сообщение было отмечено Kommersantt как решение

Решение

Kommersantt, чтобы твой вариант работал, надо после getline() флаги сбрасывать с помощью clear().
Или так:
C++
1
2
    char c;
    cin >> c >> std::setw(4) >> num.areaCode >> c >> std::setw(4) >> num.exchange >> c >> std::setw(4) >> num.line;
1
18 / 18 / 24
Регистрация: 21.06.2014
Сообщений: 147
07.02.2015, 22:52  [ТС] 4
Спасибо, разобрался))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2015, 22:52
Помогаю со студенческими работами здесь

Перегрузка операций - , -- , -=
Создать класс, который хранит целое девятеричное число без знака. Перегрузить операции -, --, -=....

Перегрузка операций
C++ Перегрузка операций.. Помоги написать прогу Определить класс для работы с квадратной...

Перегрузка операций С++
Подскажете пожалуйста, как буквам &quot;А&quot; и &quot;В&quot; присвоить номера 10 и 11 вместо 17 и 18. // пр4.cpp:...

Перегрузка операций
Разработайте программу на языке С++, используя пользовательский тип данных – классы и перегрузку...

перегрузка операций С++
Доброй ночи. Товарищи помогите пожалуйста, нужно срочно сдать лабораторную, а я никак не освою...

Перегрузка операций
Друзья, помогите с перегрузкой некоторых операций, пожалуйста) Задание: Есть угол на...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru