Итак, у меня есть проблема.
Мне нужно взять строку (у меня не может быть ее как int, она должна быть определена как строка), и внутри метода set я должен проверить, что число имеет длину 9 или 13 цифр и содержит только цифры.
Я могу проверить длину, используя str.length (), но не могу подтвердить, что вход содержит только цифры.
Вот мой текущий код:
void Book::setISBN(string ISBN)
{
//validate the length here ALSO NEED TO VALIDATE ITS A NUMBER
if (ISBN.length() >= 9 && ISBN.length() <= 13) {
this->ISBN = ISBN;
}
else {
this->ISBN = '0';
}
}
Это код, который будет извлекать информацию:
Book b = Book();
b.setISBN("23");
b.setAuthor("R.L. Stine");
b.setTitle("Goosebumps");
b.setPrice(25.00);
Book b2 = Book("thisisshith", "Stephen King", "IT", 20.32);
Первая часть b работает как setISBN ("23") вернется с нуля, но b2 "thisisshith" вернется точно так же. Мне нужно, чтобы оно также возвращалось как 0. Если бы это был набор цифр длиной от 9 до 13, он бы возвращал правильно.
Любая помощь будет оценена.
Я попытался isdigit (), но говорит, что он не может преобразовать между строкой и int.