Я пытался разрешить только положительный целочисленный ввод в мой
программа.
Вы можете легко проверить это с помощью std :: isdigit , если вы взяли пользовательский ввод в виде строки вместо целого числа .
- принять пользовательский ввод в виде строки .
- для каждого символа в строке, проверьте, является ли это цифрой (используя
std::isdigit
).
- если какой-либо из символов в пользовательском вводе (который является строкой) не является допустимой цифрой, вернуть логическое значение = false .
- если оно истинно для всех символов, input является целым числом, и вы можете преобразовать его обратно в целое число, используя std :: to_string .
Ниже приведен пример кода:
СМОТРИТЕ ЖИТЬ
#include <iostream>
#include <cctype> // std::isdigit
#include <string>
#include <vector>
bool isInteger(const std::string& input)
{
for (const char eachChar : input)
if (!std::isdigit(eachChar))
return false; // if not a digit, return False
return true;
}
int main()
{
std::vector<std::string> inputs{ "123", "-54", "8.5", "45w" }; // some inputs as strings
for(const std::string& input: inputs)
{
if (isInteger(input))
{
// apply std::stoi(input) to convert string input to integer
std::cout << "Input is a valid integer: " << input << std::endl;
}
else { std::cout << input << " is not a valid integer!\n"; }
}
}
выход
Input is a valid integer: 123
-54 is not a valid integer!
8.5 is not a valid integer!
45w is not a valid integer!