このFAQを読んだ後、istringstream を使用して入力文字列を数値に変換することにしました。
私のコードは次のようになります。
<template T>
T Operand<T>::getValue(const std::string &s)
{
T _value;
std::istringstream v_ss(s);
v_ss >> _value;
return _value;
}
T が int、short、long、または float の場合、問題なく正しい値が得られます。しかし、T が int8_t の場合、このコードは機能しません。
たとえば、入力文字列が「10」の場合、getValue は値が 49 の int8_t を返します。
ASCII テーブルで 49 == '1' を使用すると、 >> 演算子は入力文字列の最初の文字を読み取って停止したと思います。
FAQでわからない裏技とかありますか?