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

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

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

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

24.02.2013, 21:43. Просмотров 249. Ответов 3
Метки нет (Все метки)

Здравствуйте. Не могу прочитать данные после второго ввода (после 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);
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2013, 21:43     Не могу прочитать данные
Посмотрите здесь:

Как правильно прочитать данные? C++
C++ не могу прочитать из файлов
Прочитать данные из файла C++
C++ Прочитать данные из файла и построить график
Как прочитать данные pdf C++
C++ Не могу прочитать структуру с файла
Не могу прочитать код C++
Не могу прочитать некоторые выражения C++
C++ Не могу корректно прочитать код
C++ Не могу прочитать данные ячейки памяти
Как на с++ прочитать данные из СОМ порта? C++
Не могу прочитать строку C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,600
Завершенные тесты: 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
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,600
Завершенные тесты: 1
24.02.2013, 22:37     Не могу прочитать данные #4
Цитата Сообщение от wikikino Посмотреть сообщение
торое число вводится нормально
В этом случае знак конца строки пропускается и число читается нормально.
Yandex
Объявления
24.02.2013, 22:37     Не могу прочитать данные
Ответ Создать тему
Опции темы

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