Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ограничения ввода (C++, Console Wizard)

4.7K
15 ноября 2007 года
bobik02
140 / / 11.09.2007
как можно сделать, что бы при
вводе ( cin ) не разрешало ввети более чем 3 символа или цыфры ? :confused:

например: ввел я три цыфры и дальше не пускает консоль ввести...

и еще такой момент по мелочи:
 
Код:
cout << "Enter id:" << endl;
       cin >> id;
       cout << "Enter name:" << endl;
       cin >> name;

почему когда я ввожу с пробелом первое значение оно после пробела,
присваевает второму и т.к.
например ввел я так:
 
Код:
test test2

мне надо что бы строка "test test2" записалася в переменную id ...
а оно же записывает для id "test" а для name "test2" . как пороботь?
489
15 ноября 2007 года
NeO_u
277 / / 11.10.2006
Цитата: bobik02
как можно сделать, что бы при
вводе ( cin ) не разрешало ввети более чем 3 символа или цыфры ? :confused:

например: ввел я три цыфры и дальше не пускает консоль ввести...

и еще такой момент по мелочи:
 
Код:
cout << "Enter id:" << endl;
       cin >> id;
       cout << "Enter name:" << endl;
       cin >> name;

почему когда я ввожу с пробелом первое значение оно после пробела,
присваевает второму и т.к.
например ввел я так:
 
Код:
test test2

мне надо что бы строка "test test2" записалася в переменную id ...
а оно же записывает для id "test" а для name "test2" . как пороботь?



используй cin.getline(); там же можешь указать максимальный размер вводимой строки.

4.7K
15 ноября 2007 года
bobik02
140 / / 11.09.2007
Цитата: NeO_u
используй cin.getline(); там же можешь указать максимальный размер вводимой строки.



Но cin.getline(); - может только "резать" (насколько я понял)
например ввел я ограничение на 3 символа...
а пользователь в консоле напишет допустим bobik02 , cin.getline конечно оно оставит только bob , но мне надо что бы оно не позволило ввести больше чем можно!

нарпимер для теста написал такой полигон:

Код:
#include <iostream>
#include <conio>

using namespace std;

void main()
{
  char  test[3];
  char test2[10];

  cout  << "enter first string:" << endl;
  cin.getline(test,4);
  cout  << "enter second string:" << endl;
  cin.getline(test2,11);

  cout << "first: " << test <<endl;
  cout << "second: "  << test2 <<endl;

   getch();
}

и что ж получается если я ввожу в переменную test больше чем 3 символа, тогда вообще глючит и до ввода переменной test2 вообще не пускает :(

как быть ? :eek:
489
15 ноября 2007 года
NeO_u
277 / / 11.10.2006
делай cin.ignore()
4.7K
15 ноября 2007 года
bobik02
140 / / 11.09.2007
Цитата: NeO_u
делай cin.ignore()



не понял?

489
15 ноября 2007 года
NeO_u
277 / / 11.10.2006
Цитата: bobik02
не понял?



а что непонятного?
cin.getline(s,3);
cin.ignore(3); или cin.ignore() точно не помню.
cin.geline();

cin.ignore - опустошает буфер.

ЗЫ: а ограничивать, то бы больше ввести нельзя было, невозможно, т.к. это консоль.

8.9K
16 ноября 2007 года
Kulti
77 / / 29.07.2006
Цитата: NeO_u
ЗЫ: а ограничивать, то бы больше ввести нельзя было, невозможно, т.к. это консоль.

Вообще-то можно, но с помощью cin вроде нельзя.

4.7K
16 ноября 2007 года
bobik02
140 / / 11.09.2007
Цитата: Kulti
Вообще-то можно, но с помощью cin вроде нельзя.



А помощью чего можно ? :)

1.6K
16 ноября 2007 года
Vov4ick
476 / / 01.02.2007
Самый надёжный способ - cgets, либо посимвольное чиение с обработкой нужных клавиш. Потом разобрать на элементы и sscanf. Можно обработать все ситуации.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог