cout << "Enter id:" << endl;
cin >> id;
cout << "Enter name:" << endl;
cin >> name;
Ограничения ввода (C++, Console Wizard)
вводе ( cin ) не разрешало ввети более чем 3 символа или цыфры ? :confused:
например: ввел я три цыфры и дальше не пускает консоль ввести...
и еще такой момент по мелочи:
Код:
почему когда я ввожу с пробелом первое значение оно после пробела,
присваевает второму и т.к.
например ввел я так:
Код:
test test2
мне надо что бы строка "test test2" записалася в переменную id ...
а оно же записывает для id "test" а для name "test2" . как пороботь?
Цитата: bobik02
как можно сделать, что бы при
вводе ( cin ) не разрешало ввети более чем 3 символа или цыфры ? :confused:
например: ввел я три цыфры и дальше не пускает консоль ввести...
и еще такой момент по мелочи:
почему когда я ввожу с пробелом первое значение оно после пробела,
присваевает второму и т.к.
например ввел я так:
мне надо что бы строка "test test2" записалася в переменную id ...
а оно же записывает для id "test" а для name "test2" . как пороботь?
вводе ( cin ) не разрешало ввети более чем 3 символа или цыфры ? :confused:
например: ввел я три цыфры и дальше не пускает консоль ввести...
и еще такой момент по мелочи:
Код:
cout << "Enter id:" << endl;
cin >> id;
cout << "Enter name:" << endl;
cin >> name;
cin >> id;
cout << "Enter name:" << endl;
cin >> name;
почему когда я ввожу с пробелом первое значение оно после пробела,
присваевает второму и т.к.
например ввел я так:
Код:
test test2
мне надо что бы строка "test test2" записалася в переменную id ...
а оно же записывает для id "test" а для name "test2" . как пороботь?
используй cin.getline(); там же можешь указать максимальный размер вводимой строки.
Цитата: 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();
}
#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:
делай cin.ignore()
Цитата: NeO_u
делай cin.ignore()
не понял?
Цитата: bobik02
не понял?
а что непонятного?
cin.getline(s,3);
cin.ignore(3); или cin.ignore() точно не помню.
cin.geline();
cin.ignore - опустошает буфер.
ЗЫ: а ограничивать, то бы больше ввести нельзя было, невозможно, т.к. это консоль.
Цитата: NeO_u
ЗЫ: а ограничивать, то бы больше ввести нельзя было, невозможно, т.к. это консоль.
Вообще-то можно, но с помощью cin вроде нельзя.
Цитата: Kulti
Вообще-то можно, но с помощью cin вроде нельзя.
А помощью чего можно ? :)
Самый надёжный способ - cgets, либо посимвольное чиение с обработкой нужных клавиш. Потом разобрать на элементы и sscanf. Можно обработать все ситуации.