【发布时间】:2015-04-25 02:17:57
【问题描述】:
我想使用 boost 检查给定的字符串是否是有效的 UUID。
这是我通过查看 boost 网站上的文档得出的结论:
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,正如 here 所发布的那样。我想知道我是否应该遵循这种方法。任何建议表示赞赏。
【问题讨论】:
-
你试过正则表达式吗?
-
没有。我已经使用 boost 并且看到了 UUID 库,所以我想我会尝试使用它。
-
我之所以提到它是因为Boost.Regex 我相信这是C++11's
regex的基础
标签: c++ boost uuid boost-uuid