Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
RamonN
32 / 32 / 11
Регистрация: 13.07.2011
Сообщений: 138
#1

Неправильная работа программы по учебнику Дейтелов - C++

06.12.2013, 14:27. Просмотров 248. Ответов 9
Метки нет (Все метки)

Всем доброго времени суток.
Изучаю книгу Дейтелов "Как программировать на С/С++" , попутно выполняя написанные там программы
Возникла ошибка
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
#include <iostream>
 
class PhoneNumber
{
    friend std::ostream &operator<<(std::ostream &, const PhoneNumber&);
    friend std::istream &operator>>(std::istream &, PhoneNumber&);
private:
    char areaCode[4];
    char exchange[4];
    char line[5];
};
 
std::ostream &operator<<(std::ostream &output, const PhoneNumber &num)
{
    output << "(" << num.areaCode << ") "
        << num.exchange << "-" << num.line;
    return output;
}
 
std::istream &operator>>(std::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;
 
    std::cout << "Enter a phone number in the "
        << "form (123) 456-7890:\n";
    std::cin >> phone;
 
    std::cout << "The phone number entered was:\n"
        << phone << std::endl;
 
    system("pause");
    return 0;
}
Функция getline при переопределении оператора >> считывает только в первый элемент areaCode класса num, а остальные просто пустые строки.
Как сделать, чтобы считывал во все элементы класса?
Заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 14:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Неправильная работа программы по учебнику Дейтелов (C++):

Неправильная работа программы - C++
была программа, которая считывает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв. вот она) ...

Неправильная работа программы после разбития ее на функции - C++
Ребята, кому не сложно, помогите найти ошибку. При выборе первого кейса меню все хорошо ввожу строку как положено, перехожу ко второму...

Неправильная работа - C++
Почему на неправильно работает? #include&lt;iostream&gt; using namespace std; int main() { int b; for (int i=0; i&lt;=14;...

Неправильная работа цикла - C++
Есть два цикла: while (infile){ infile &gt;&gt; dist1; cout &lt;&lt; dist1 &lt;&lt; endl; } while (1){ infile &gt;&gt; dist1; ...

Неправильная работа с файлами - C++
#include &lt;iostream.h&gt; #include &lt;fstream.h&gt; #include &lt;windows.h&gt; #include &lt;string&gt; struct student { char name; char...

Неправильная работа деструктора - C++
При выполнении деструктора вылетает ошибка //Врачебный контроль физиологического состояния спортсмена #include &lt;iostream&gt; ...

9
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.12.2013, 16:10 #2
Зачем здесь getline() использовать? getline() будет считывать всю введённую строку, но так как она длиннее 3-х символов (4 - 1), то, после первого чтения, установится флаг ошибки и поток станет нерабочим.
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
06.12.2013, 16:13 #3
У вас формат телефонного номера не совпадает с тем, который в cout ( (123) 456-7890 - такой формат работать не будет)
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.12.2013, 16:18 #4
Используйте get(), с такими же параметрами.
C++
1
2
3
4
5
6
7
8
9
10
11
12
std::istream &operator>>(std::istream &input, PhoneNumber &num)
{
    input.ignore();
    input.get(num.areaCode, 4);
    input.ignore(2);
    input.get(num.exchange, 4);
    input.ignore();
    input.get(num.line, 5);
    input.ignore();
    
    return input;
}
1
Миниатюры
Неправильная работа программы по учебнику Дейтелов  
RamonN
32 / 32 / 11
Регистрация: 13.07.2011
Сообщений: 138
06.12.2013, 16:54  [ТС] #5
alsav22, Спасибо большое, помогло, getline использовал, т.к. в книге был приведен пример именно с ней
0
alsav22
06.12.2013, 17:03
  #6

Не по теме:

Цитата Сообщение от RamonN Посмотреть сообщение
т.к. в книге был приведен пример именно с ней
Страницу в книге можно узнать?

0
RamonN
32 / 32 / 11
Регистрация: 13.07.2011
Сообщений: 138
06.12.2013, 17:34  [ТС] #7
alsav22, Глава 18.5, 763 стр.
0
alsav22
06.12.2013, 17:48
  #8

Не по теме:

А издание какое? Год?

0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
06.12.2013, 17:54 #9
alsav22 прав, считай просто всю строку, а потом ее разбери!
0
RamonN
06.12.2013, 18:25  [ТС]     Неправильная работа программы по учебнику Дейтелов
  #10

Не по теме:

alsav22, Издание и год не скажу, т.к. книга без титульника и вообще каких-либо опоновательных знаков Но она уже давненько у меня пылится, так что думаю не самое новое издание

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

Неправильная работа исключений - C++
Сделал в программе исключения, если пользователь направльно ввводит значения: // englerr.cpp // контроль ввода данных для класса...

Условие цикла if, неправильная работа if - C++
cin.getline(str1,N); //getline-запись данных в строку str1,размерность N; cout&lt;&lt;&quot;Enter second string -&gt; &quot;&lt;&lt;endl; ...

Неправильная работа Функции strcmp - C++
Здравствуйте,не могу разобраться,почему не работает блок с проверкой на те слова, которые не присутствуют в обеих строках одновременно. Уже...

Неправильная работа функции rand() в c++ - C++
Функция rand() при подключении функции srand не через time,а через переменную типа unsigned не выдает десятки вот в этом коде: ...


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

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

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