Jak określić ilość cyfr w cin>>

0

Cześć,
mam pytanie. Jeśli np. określę

int a;
int b;
a następnie,
cout << " X " cin >> a
cout << " Y " cin >> b;

to jak zrobić, żeby określić maksymalną długość (ilość cyfr) wprowadzanej zmiennej "a", tak aby po wyczerpaniu tego limitu program przeszedl automatycznie do wpisywania b.
Chcę to zrobić przy wpisywaniu daty, informując użytkownika o wpisywaniu w formacie dd.mm.yyyy

pozdrawiam

2

Takie coś możesz zrobić:

#include<iostream>
#include<string>
using namespace std;

int main() {
	int dzien = 0;
	string linijka = "";
	getline(cin, linijka);
	if (linijka.size() > 2) cout << "Za dluga wartosc!\n";
	else {
		dzien = stoi(linijka);
		cout << dzien << endl;
	}
	return 0;
}

PS: Oczywiście zamiast getline może byc zwykły cin >> linijka;

0

a moze cos takiego by zadzialalo?

int day;
int i=0;
do{
cin>>day;
++i;
}
while(i>1);
 
3

Może coś w tym kierunku?

#include <iostream>
#include <string>
#include <cctype>
using namespace std;

unsigned long read_limited(size_t max_digits){
	string result;
	while(isspace(cin.peek()))
		cin.get();
	while(isdigit(cin.peek()) && max_digits--)
		result += cin.get();
	return stoul(result);
}

int main() {
	auto x = read_limited(3), y = read_limited(4);
	
	cout << x << " " << y << endl;
	return 0;
}
in out
123 12345 123 1234
5

Po co utrudniać sobie życie? #include <iomanip> i std::setw implementują odpowiednie zachowania.

	int a{42}, b{42};

	string buf;

	cin >> setw(5) >> buf;
	a = stoi(buf);

	cin >> setw(3) >> buf;
	b = stoi(buf);

http://melpon.org/wandbox/permlink/hgKMesuAUbTat21X

1 użytkowników online, w tym zalogowanych: 0, gości: 1