Ich versuche, einen regulären Ausdruck zu verwenden, um sicherzustellen, dass die für ein Flugzeug eingegebene Überschrift zwischen o und 360 liegt, aber ich kann es nicht zum Funktionieren bringen.Regulärer Ausdruck funktioniert nicht C++
std::regex headingCheck{"^([0-9]|1[0-9]2[0])$"};
bool match = false;
while (!match)
{
if (std::regex_match(heading, headingCheck))
{
heading_ = heading;
}
else
{
std::cout << "Invalid heading, can only be between 0 and 360 degrees" << std::endl;
}
}
#
//Heading can only be between 0-360?
if (heading >= 0 && heading <= 360)
{
heading_ = heading;
}
else
{
std::cout << "Incorrect heading, heading can only be between 0 and 360" << std::endl;
}
soll ich tun dies statt? Ist es so genau/zuverlässig?
Versuchen Gehäuse zu einem int, überprüfen Sie den Bereich? - Dies ist kein Job für einen RE. –
Validieren von Bereich durch Regex ist machbar, wäre aber in der Größenordnung komplexer, die einfach zu "Int" konvertieren und Bereich überprüfen. Verwenden Sie Regex nur um zu bestätigen, dass diese Nummer angegeben ist. – Slava
void Aircraft :: SetHeading (int Überschrift) { \t // Überschrift kann nur zwischen 0-360 sein? \t // Regulären Ausdruck einrichten, vergleichen Sie es mit Eingabe \t Std :: Regex ÜberschriftCheck {"^ ([0-9] | 1 [0-9] 2 [0]) $"}; \t bool match = false; \t while (Spiel!) \t { \t \t if (std :: regex_match (Überschrift, headingCheck)) \t \t { \t \t \t heading_ = Position; \t \t} \t \t sonst \t \t { \t \t \t std :: cout << "Ungültige Position, kann nur zwischen 0 und 360 Grad sein" << std :: endl; \t \t} \t} \t } Sein für eine Setter-Methode, was euch meinen Bereich überprüfen? – MurrackCarn