C++ string auf int prüfen?
Hallo ich möchte einen String in eine Zahl umwandeln (hab das ganze mit Streams gelöst), allerdings bräuchte ich vorher eine Überprüfung ob es tatsächlich eine Zahl ist und nicht einfach ein char (denn der wird mittels Stream auch auf eine Zahl umgewandelt).
2 Antworten
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
programmieren
Du könntest ein try mit catch verwenden
#include <iostream>
#include <string>
int main() {
std::string s = "10";
try
{
int i = std::stoi(s);
std::cout << i << '\n';
}
catch (std::invalid_argument const &e)
{
std::cout << "Bad input: std::invalid_argument thrown" << '\n';
}
catch (std::out_of_range const &e)
{
std::cout << "Integer overflow: std::out_of_range thrown" << '\n';
}
return 0;
}
Woher ich das weiß:Studium / Ausbildung – Informatikstudent
Man könnte es auch folgendermaßen machen:
bool has_only_digits(const std::string str)
{
bool result = false;
if (str.size() > 0)
{
std::size_t start = 0;
if (str[0] == '-' || str[0] == '+')
{
start = 1;
}
result = str.find_first_not_of("0123456789", start) == std::string::npos;
}
return result;
}
Woher ich das weiß:Studium / Ausbildung – Student der Informatik an der HU Berlin