ブーストを使用して、特定の文字列が有効な 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 として読み取ることも見てきました。その方法をとるべきか悩んでいます。アドバイスをいただければ幸いです。