C++ string auf int prüfen?

2 Antworten

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