Как сделать ограничение на количество чисел в номере который я буду вводить

#include <iostream>
#include <iomanip>
#include<string.h>
#include <string>
using namespace std;

class Phone_number {

public:
    int code;
    int number;
    int type_number;
    Phone_number(const Phone_number& v) :
        code(v.code),
        number(v.number),
        type_number(v.type_number) {}
    const Phone_number& operator=(const Phone_number& v)
    {
        code = v.code;
        number = v.number;
        type_number = v.type_number;
        return v;
    }
    Phone_number() {}
};
int main() {
    int a;
    int count = 0;
    int tel = 1;

    int i; 
  
    Phone_number* Phone1 = new Phone_number[tel];
    cout << "Enter Telephone number" << endl;
    for (int i = 0; i < tel; i++) {
        cin >> Phone1[i].number;
    }
  
   
 






}

Ответы (1 шт):

Автор решения: KoVadim

Я бы делал в два прихода. Вначале воспользовался бы std::cin.width(15) (или сколько Вам подходит), что бы ограничить длину вводимой строки. А потом уже проверял фактическую строку, насколько она хороша.

for (int i = 0; i < tel; i++) {
    std::cin.width(15);
    std::string number;
    cin >> number;
    if (number.empty()) { std::cout << "номер пуст не может быть"; continue;}
    if (!std::isdigit(number[0])) { std::cout << "номер должен начинаться с цифры как минимум!"; continue;}
    Phone1[i].number = number;
}

Связанный вопрос https://stackoverflow.com/questions/34444126/cs-cin-width-function-explanation

→ Ссылка