以下は私の機能です。私はなぜこの変換が機能しないのですか?
if(try_strtol(v, rhs))
とRHSそれは= 15 Vで真除いI、falseを返す= "15 \トン//コメント"
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;
}
}
でそれを呼び出します。どのように私はこれを修正するのですか?
なぜそれが真実になると思いますか?あなたは '(ss >> std :: ws).eof()'を評価するために何を期待していますか?または '(s >> v).fail()'のようなものですか? –
ステップ1:巧みにしようとしないでください。表現を分けて読めるようにしてください。あなたは誰も誰もしていません。特にあなた自身。ユニットテストのセットで作業したら、それがまだ動作するかどうかを確認するために少しの最適化を試してみてください。 –
実際、私はマーティンに書いた。 http://stackoverflow.com/questions/1243428/convert-string-to-int-with-bool-fail-in-c/1243435#1243435 – GManNickG