Voici ma fonction. Je l'appelle avecpourquoi cette conversion ne fonctionne pas?
if(try_strtol(v, rhs))
et ERS = "15 \ t // commentaire"
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;
}
}
Il retourne false, i, sauf le cas avec v = 15. Comment puis-je réparer ça?
Pourquoi pensez-vous que cela deviendra vrai? À quoi vous attendez-vous?! (Ss >> std :: ws) .eof() 'pour évaluer? ou '(s >> v) .fail()' d'ailleurs? –
Étape 1: Arrêtez d'essayer d'être intelligent. Brisez l'expression pour qu'elle soit lisible, vous ne faites rien à personne. Surtout toi-même. Une fois que vous l'avez travaillé avec un ensemble de tests unitaires, essayez votre petite astuce d'optimisation pour voir si cela fonctionne encore. –
En fait, j'ai écrit ça Martin. http://stackoverflow.com/questions/1243428/convert-string-to-int-with-bool-fail-in-c/1243435#1243435 – GManNickG