6

ブーストを使用して、特定の文字列が有効な UUID であるかどうかを確認したいと考えています。

これは、boost Web サイトのドキュメントを見て思いついたものです。

void validate_uuid(const std::string& value)
{
    try
    {
        boost::uuids::string_generator stringGenerator;
        (void)stringGenerator(value);
    }

    catch (const std::exception& ex)
    {
        // ...
    }
}

ただし、これは常に機能するとは限りません。

有効な UUID に対して短すぎる文字列で関数を呼び出すと、期待どおりに例外がスローされます。しかし、無効な UUID (例00000000-0000-0000-0000-00000000000K) で関数を呼び出すと、例外はスローされません。

誰かがなぜこれが起こっているのかを明確にしてください。

また、ここに投稿されているように、boost::lexical_cast を使用して文字列を UUID として読み取ることも見てきました。その方法をとるべきか悩んでいます。アドバイスをいただければ幸いです。

4

3 に答える 3

4
于 2015-02-23T17:43:51.593 に答える