第三章 标准库增强 v1.1
之前把
optional、variant、string_view和文件系统拼成了一个配置解析器,但它不是实际项目代码。这里先把几个容易遇到的类型分开记。
第一部分 optional
cpp
#include <optional>
std::optional<int> divide(int left, int right) {
if (right == 0) {
return std::nullopt;
}
return left / right;
}第二部分 variant
cpp
#include <string>
#include <variant>
using Value = std::variant<int, bool, std::string>;
int main() {
Value value = "ready";
return std::holds_alternative<std::string>(value) ? 0 : 1;
}第三部分 string_view
std::string_view 只引用字符范围,不拥有字符串。它适合只读参数,但原始字符串销毁或修改后,view 也不能继续使用。
cpp
#include <string_view>
bool startsWithHttp(std::string_view value) {
return value.substr(0, 4) == "http";
}后续真要写配置读取、消息队列或文件扫描时,再按具体需求补完整例子和测试。