Skip to content

第三章 标准库增强 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";
}

后续真要写配置读取、消息队列或文件扫描时,再按具体需求补完整例子和测试。