0

文字列からスカラー (char、short、int...) にデータを抽出するとき、取得したい値が型の制限を超えているかどうかを簡単に知るにはどうすればよいですか?

unsigned char          function(void)
{
    std::string        str = "259";
    std::ostringstream os(str);
    unsigned char      scalar; // could also be short, int, float or double

    if (str > /* limit of char */)
    {
        /* throw exception */
    }

    os >> scalar;
    return scalar;
}
4

1 に答える 1

0

のような新しいC++11 変換関数std::stoiを考えてみましょう。std::out_of_rangeそのような場合、例外をスローする必要があります。残念ながら、これはcharケースを直接処理しませんが、最初に に変換してからint、範囲を手動で確認できます。

于 2014-02-27T17:30:50.323 に答える