Форум: Форум C++Разное
Новые темы: 00
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр 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 Яндекс.Метрика Яндекс цитирования