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

Не могу прочитать данные - C++

Восстановить пароль Регистрация
 
wikikino
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 15
24.02.2013, 21:43     Не могу прочитать данные #1
Здравствуйте. Не могу прочитать данные после второго ввода (после enter a phrase). Объясните пожалуйста что не так, а то недавно начал изучать язык и сам не могу разобраться. Вот программа.

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
#include <iostream>
 
using namespace std;
void function();
 
int main ()
{
    function();
}
 
void function()
{
    
    cout<<"Hello."<<'\n';
    
    int number;
    cout<<"Enter a number:   ";
    cin>>number;
 
    cout<<"Enter a phrase < 20 simbols:  ";
    char phrase[20]={};
    cin.getline(phrase,20);
    
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,196
Завершенные тесты: 1
24.02.2013, 21:49     Не могу прочитать данные #2
Этот нюанс уже много раз оговаривался.
После считывания чисел в буфере текущим кодом для
ввода остается знак конца строки.
cin.getline(phrase,20);
записывает в phrase как раз этот конец строки.
Простейший способ исправить - повторить ввод:
C++
1
2
3
char phrase[20];
cin.getline(phrase,19);
cin.getline(phrase,19);
wikikino
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 15
24.02.2013, 21:56  [ТС]     Не могу прочитать данные #3
Цитата Сообщение от zss Посмотреть сообщение
Этот нюанс уже много раз оговаривался.
После считывания чисел в буфере текущим кодом для
ввода остается знак конца строки.
cin.getline(phrase,20);
записывает в phrase как раз этот конец строки.
Простейший способ исправить - повторить ввод:
C++
1
2
3
char phrase[20];
cin.getline(phrase,19);
cin.getline(phrase,19);
про буфер я читал, но я не понимаю вот что, если я после ввода первого числа напишу вот это
int number2;
cout<<"Enter another number: ";
cin>>number2;

второе число вводится нормально. Знак концу строки первого числа не идет в number2, так как в number2 могут быть только числа. Как только появляется переменная типа char, знак окончания строки сразу же туда уходит. Я правильно все понимаю ?
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,196
Завершенные тесты: 1
24.02.2013, 22:37     Не могу прочитать данные #4
Цитата Сообщение от wikikino Посмотреть сообщение
торое число вводится нормально
В этом случае знак конца строки пропускается и число читается нормально.
Yandex
Объявления
24.02.2013, 22:37     Не могу прочитать данные
Ответ Создать тему
Опции темы

Текущее время: 12:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru