Форум: Форум C++Разное
Новые темы: 00
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Форматирование потоков cin и cout (istream и ostream)

Сообщения:  [1-3] 

 
 автор: DDK   (06.04.2007 в 11:19)   письмо автору
 
   для: cheops   (05.04.2007 в 12:37)
 

Я перезагружаю функцию istream. В перезагрузке пишу как раз по порядку ввод с консоли данных для каждого поля структуры. Так вот, если я ограничиваю cin.width(10), например, то если я ввожу потом в это поле не больше указанного кол-во символов, то ввод продолжается нормально. Но если я ввожу больше символов, чем прописал в width, то после нажатия ввода у меня перезагружающая функция пробегает быстро до своего конца, при этом выводит на экран cout'ы, но на дальшеидущие cin'ы уже не реагирует (пропускает их).

  Ответить  
 
 автор: cheops   (05.04.2007 в 12:37)   письмо автору
 
   для: DDK   (05.04.2007 в 11:13)
 

А помоему всё замечательно срабатывает и урезается...
#include <iostream>
using namespace std;

int main()
{
  char name[80];
  int zhanr;
  cout << "Name:";
  cin.getline(name, 15);
  cout << "Zhanr:";
  cin.width(10);
  cin >> zhanr;

  cout << "\n" << name << " " << zhanr << endl;

  return 0;
}

В консоли нельзя ограничить ввод пользователя, вы не контролируете ввод, пока не возьмёте под своё управление окно... Такой жёсткий контроль удел графического интерфейса, в консоли остаётся только получить то, что ввёл пользователь, удалить не допустимые символы или попросить пользователя ввести данные ещё раз.

  Ответить  
 
 автор: DDK   (05.04.2007 в 11:13)   письмо автору
 
 

Что-то ничего не пойму... не работает :) Пробую простой пример:


cout << "Name:";
cin.getline(dbitems.name, 15);
cout << "Zhanr:";
cin.width(10);
cin >> dbitems.zhanr;


Во-первых, при любых махинациях не получается урезать максимальное число вводимых символов и их тип... Ну, допустим, ввел я 15 символов, а дальше чтобы уже нельзя было вводить (как size у input'ов в HTML)... Потом не понятно, как делать обработку типа ввода. Допустим, чтобы нельзя было ввести ничего кроме цифр.

  Ответить  

Сообщения:  [1-3] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования