Unten ist meine Funktion. Ich nenne es mitWarum funktioniert diese Konvertierung nicht?
if(try_strtol(v, rhs))
und RHS = "15 \ t // Kommentar"
bool try_strtol(int64_t &v, const string& s)
{
try
{
std::stringstream ss(s);
if ((ss >> v).fail() || !(ss >> std::ws).eof())
throw std::bad_cast();
return true;
}
catch(...)
{
return false;
}
}
Es gibt false zurück, i Ausnahme gilt mit v = 15. Wie behebe ich das?
Warum erwarten Sie, dass es wieder wahr wird? Was erwarten Sie?! (Ss >> std :: ws) .eof() 'zu bewerten? oder '(s >> v) .fail()' in dieser Angelegenheit? –
Schritt 1: Hör auf, clever zu sein. Zerlege den Ausdruck so, dass er lesbar ist, du machst niemanden zufrieden. Vor allem du selbst. Sobald Sie es mit einer Reihe von Komponententests arbeiten, dann versuchen Sie Ihren kleinen Optimierungstrick, um zu sehen, ob es noch funktioniert. –
Eigentlich habe ich diesen Martin geschrieben. http://stackoverflow.com/questions/1243428/convert-string-to-int-with-bool-fail-in-c/1243435#1243435 – GManNickG