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

Форум C++

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Форматирование потоков cin и cout (istream и ostream)
 
 автор: 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)... Потом не понятно, как делать обработку типа ввода. Допустим, чтобы нельзя было ввести ничего кроме цифр.

  Ответить  
 
 автор: 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   (06.04.2007 в 11:19)   письмо автору
 
   для: cheops   (05.04.2007 в 12:37)
 

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

  Ответить  
Rambler's Top100
вверх

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