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

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

Войти
Регистрация
Восстановить пароль
 
Aloir
217 / 217 / 13
Регистрация: 17.12.2010
Сообщений: 689
#1

Потоки. Ввод данных. - C++

14.08.2011, 15:06. Просмотров 937. Ответов 12
Метки нет (Все метки)

Если согласится на ввод второго человека, пропускается ввод его имени... вроде ввод все правильно, не знаю в чем беда
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
#include"stdafx.h"
#include <iostream>
using namespace std; 
 
class NameDataSet{
public:
    char FirthName[128];
    char LastName[128];
    int creditCard;
};
 
void getData(NameDataSet& cl)
{
    cout<<"Vvedite Familiu: ";
    cin.getline(cl.FirthName,128);
    cout<<"Vvedite Imya: ";
    cin.getline(cl.LastName,128);
    cout<<"Vvedite nomer kreditnoi karti: ";
    cin>>cl.creditCard;
 
}
 
void outData(NameDataSet& cl)
{
    cout <<endl<<cl.FirthName<<" "<<cl.LastName<<" "<<cl.creditCard;
}
int main()  
{
    const int max=20;
    NameDataSet nds[max]; //обьявление класса
    int count=0;
    char ch;
    do
    {
        count++;
        getData(nds[count-1]);
        cout<<endl<<"Vvesti es4e odnogo 4eloveka? Y or N?: ";
        cin>>ch;
    }while(tolower(ch)!='n' && count<=max);
    
    system("cls");
    for(int i=0;i<count;i++)
        outData(nds[i]);
 
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 15:06     Потоки. Ввод данных.
Посмотрите здесь:

Ввод-вывод, потоки - C++
Где лучше всего описано, как работает система вводы-вывода в C++ и что такое потоки? И желательно что-нибудь почитать про систему...

Потоки. Бинарный ввод/вывод - C++
Нужно написать бинарный вывод в файл. По учебнику вроде бы что-то в этом роде: ofstream f(&quot;test.bin&quot;, std::ios::binary); if...

Потоки. Ввод-вывод. Ошибка на этапе компиляции. - C++
#include &lt;windows.h&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; void main() { char...

Потоки. Ввод элементов в массив через пробельный символ - C++
Ребят, как ввести десятичные числа в массив через пробел? Допустим, есть массив Arr, я ввожу: 250 5 77 и элементы принимают соответственно...

Потоки данных - C++
Все наверно знают, что стандартные потоки (cout, cin, cerr, clog) ввода и вывода можно перенаправлять в файлы. Зачем тогда нужны классы...

Файловые потоки данных - C++
Помогите, пожалуйста! Надо написать программу, которая считывает из файла строки и сохраняет их в другой файл в обратном порядке. Я...

Тема потоки данных - C++
Задача: Создается файл путем ввода имени файла с клавиатуры, хочу с помощью функции get() и цикла do while ввести текст, который выведется...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
14.08.2011, 15:10     Потоки. Ввод данных. #2
Ваш код не смотрел, но попробуйте напсать cin.get(); перед вводом этого имени: "пропускается ввод его имени...", скорее всего после предидущего ввода в потоке остался символ '\n'.
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
14.08.2011, 15:18     Потоки. Ввод данных. #3

Не по теме:

Да у меня такаеже проблема была.


В строке которую ты вводишь есть пробелы? если нет то можешь через cun>>...
Aloir
217 / 217 / 13
Регистрация: 17.12.2010
Сообщений: 689
14.08.2011, 15:26  [ТС]     Потоки. Ввод данных. #4
Извиняюсь, после ввода 1 человека и последущих людей, пропускается фамиля, тоесть 1 член класса.
Нет, не помогло. Последний ввод был ввод цифр в целочисленное значение...
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
14.08.2011, 15:28     Потоки. Ввод данных. #5
ну или если хочешь с getline вот тебе твоя функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void getData(NameDataSet& cl)
{
        cin.sync();
        cout<<"Vvedite Familiu: ";
        cin.getline(cl.FirthName,128);
        cin.sync();
        cout<<"Vvedite Imya: ";
        cin.getline(cl.LastName,128);
        
        cout<<"Vvedite nomer kreditnoi karti: ";
        cin>>cl.creditCard;
 
}
Aloir
217 / 217 / 13
Регистрация: 17.12.2010
Сообщений: 689
14.08.2011, 15:28  [ТС]     Потоки. Ввод данных. #6
Цитата Сообщение от Ree.exe Посмотреть сообщение

Не по теме:

Да у меня такаеже проблема была.


В строке которую ты вводишь есть пробелы? если нет то можешь через cun>>...
Нет пробелов, но если бы были? не впервой тоже сталкиваюсь, и хочу все-таки разобратся в чем тут дело...
Ree.exe
14.08.2011, 15:30
  #7

Не по теме:

Пост выше, все как ты хочешь через cin.getline()

m1Rr0r
247 / 230 / 15
Регистрация: 05.02.2010
Сообщений: 3,256
Завершенные тесты: 2
14.08.2011, 17:15     Потоки. Ввод данных. #8
cin.clear();

Добавлено через 2 минуты
как я понимаю дело в "ентер"е после ввода строки с именем или фамилией в потоке сидит код кнопки етнер, и при следующем вызове cin забирает его, вместо возможности ввести что то новое.
хотя могу и ошибаться в с++ не оч )
попробуй очищать поток cin
soon
14.08.2011, 19:00
  #9

Не по теме:

Зачем класс только с открытыми переменными? Классы (если верить книгам) созданы для того, чтобы ограничивать доступ к некоторым членам этого класса. Доступ к ним должен осуществляться через открытые функции этого же класса. Логичней было бы использовать структуру в данном случае, imho

Aloir
217 / 217 / 13
Регистрация: 17.12.2010
Сообщений: 689
14.08.2011, 21:46  [ТС]     Потоки. Ввод данных. #10
Цитата Сообщение от soon Посмотреть сообщение

Не по теме:

Зачем класс только с открытыми переменными? Классы (если верить книгам) созданы для того, чтобы ограничивать доступ к некоторым членам этого класса. Доступ к ним должен осуществляться через открытые функции этого же класса. Логичней было бы использовать структуру в данном случае, imho

В данно случает, это был просто пример с книги, а так да, полсностью согласен, структура гораздо удобнее была бы

Добавлено через 6 минут
Цитата Сообщение от m1Rr0r Посмотреть сообщение
cin.clear();

Добавлено через 2 минуты
как я понимаю дело в "ентер"е после ввода строки с именем или фамилией в потоке сидит код кнопки етнер, и при следующем вызове cin забирает его, вместо возможности ввести что то новое.
хотя могу и ошибаться в с++ не оч )
попробуй очищать поток cin
А вот cin.clear() - не помогает, помогло cin.sync()
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 22:08     Потоки. Ввод данных. #11
Цитата Сообщение от Aloir Посмотреть сообщение
полсностью согласен, структура гораздо удобнее была бы
Ну почему же? А если getData и outData сделать функциями-членами? У вас и так что-то вроде thiscall выходит И на счёт выигрыша в удобности - сомневаюсь... Что так, что так.
soon
14.08.2011, 22:23
  #12

Не по теме:

Я не говорил, что будет удобнее. Просто структуры, как правило, делаются открытыми, и, дабы не нарушать это правило, предложил использовать структуру, если необхдимо сохранить доступность переменных. Если же нет, то кравивее будет сделать все одним классом, со скрытыми переменными и открытыми функциями.
Оставим это на усмотрение ТС

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2011, 00:47     Потоки. Ввод данных.
Еще ссылки по теме:

Потоки и сокрытие данных - C++
Всем доброго времени суток. Появился вопрос, касающийся потоков. Есть класс, в котором имеются функции для вывода внутренних данных в...

COM порт, потоки, и таймер. Считывание данных - C++
всем привет, такая задача. Нужно считывать данные с ком порта, сразу после того как я открыл ком порт. начал с этой темы. ...

Является ли консоль носителем данных, то есть файлом, если потоки выводят информацию именно в ней? - C++
Система ввода-вывода С++ основана на работе с потоками. Потоки в свою очередь являются абстрактными объектами с логическим интерфейсом и...

ввод данных - C++
Мне нужно сделать матричный калькулятор. Я у меня не получается создать форму для ввода уравнений(число уравнений не должно быть...

Ввод данных - C++
Народ, Как в С++ сделать чтобы 2 переменные вводились через пробел в одну строчку? Причём чтобы были в диапазоне от 2 до 300 000.


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

Или воспользуйтесь поиском по форуму:
silentnuke
15.08.2011, 00:47     Потоки. Ввод данных.
  #13

Не по теме:

Цитата Сообщение от soon Посмотреть сообщение

Не по теме:

Зачем класс только с открытыми переменными? Классы (если верить книгам) созданы для того, чтобы ограничивать доступ к некоторым членам этого класса. Доступ к ним должен осуществляться через открытые функции этого же класса. Логичней было бы использовать структуру в данном случае, imho

а в чем уж такая глобальная разница класс или структура, если в с++ они отличаются всего-лишь доступом по-умолчанию?)
да и классы это в стиле с++, ведь структуры, оставлены для совместимости с С=)

Yandex
Объявления
15.08.2011, 00:47     Потоки. Ввод данных.
Ответ Создать тему
Опции темы

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