|
|
|
| Что-то ничего не пойму... не работает :) Пробую простой пример:
cout << "Name:";
cin.getline(dbitems.name, 15);
cout << "Zhanr:";
cin.width(10);
cin >> dbitems.zhanr;
|
Во-первых, при любых махинациях не получается урезать максимальное число вводимых символов и их тип... Ну, допустим, ввел я 15 символов, а дальше чтобы уже нельзя было вводить (как size у input'ов в HTML)... Потом не понятно, как делать обработку типа ввода. Допустим, чтобы нельзя было ввести ничего кроме цифр. | |
|
|
|
|
|
|
|
для: 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;
} |
В консоли нельзя ограничить ввод пользователя, вы не контролируете ввод, пока не возьмёте под своё управление окно... Такой жёсткий контроль удел графического интерфейса, в консоли остаётся только получить то, что ввёл пользователь, удалить не допустимые символы или попросить пользователя ввести данные ещё раз. | |
|
|
|
|
|
|
|
для: cheops
(05.04.2007 в 12:37)
| | Я перезагружаю функцию istream. В перезагрузке пишу как раз по порядку ввод с консоли данных для каждого поля структуры. Так вот, если я ограничиваю cin.width(10), например, то если я ввожу потом в это поле не больше указанного кол-во символов, то ввод продолжается нормально. Но если я ввожу больше символов, чем прописал в width, то после нажатия ввода у меня перезагружающая функция пробегает быстро до своего конца, при этом выводит на экран cout'ы, но на дальшеидущие cin'ы уже не реагирует (пропускает их). | |
|
|
|