Varlib 提供了通用的变体类型(variant)以及配套的字符串和集合类。设计灵感来源于 Qt 的 QVariant 体系,但零外部依赖,可独立使用。
| 类 | 说明 |
|---|---|
ZString |
UTF-16 字符串,支持丰富的字符串操作(查找、子串、大小写转换、trim、split/join)、数值解析(toInt/toFloat 等)、编码转换(UTF-8/Latin1/UTF-16) |
ZStringView |
轻量级只读 UTF-16 字符串视图,类似于 std::u16string_view |
ZStringList |
ZString 列表,支持增删改查 |
ZVariant |
核心变体类型,可持有 bool、整数、浮点数、ZString、ZStringList、ZVariantList、ZVariantMap、ZVariantHash 等,支持类型转换和写时复制 |
ZVariantList |
ZVariant 列表 |
ZVariantMap |
有序映射表(ZString → ZVariant) |
ZVariantHash |
无序哈希映射表(ZString → ZVariant) |
bool, char, unsigned char, short, unsigned short, int, unsigned int, long long, unsigned long long, float, double, ZString, ZStringList, ZVariantList, ZVariantMap, ZVariantHash, void*
- CMake >= 3.16
- 支持 C++17 的编译器(GCC 8+, Clang 7+, MSVC 2019+)
# 配置并构建
cmake -B build
cmake --build build- 静态库
varlib— 链接到你的项目中使用 - 测试程序
test_variant— 运行单元测试
cmake --build build
./build/test_variant # Linux / macOS
# build\Debug\test_variant.exe 或 build\Release\test_variant.exe (Windows)在 CMakeLists.txt 中:
add_subdirectory(path/to/varlib)
target_link_libraries(your_target PRIVATE varlib)#include "zvariant.h"
#include "zvariantmap.h"
// 创建不同类型的 variant
ZVariant v1(42);
ZVariant v2(3.14);
ZVariant v3(ZString("hello"));
// 类型转换
int num = v1.toInt(); // 42
ZString str = v3.toString(); // "hello"
v1.convert(ZVariant::String); // Int → String
// 使用映射表
ZVariantMap map;
map.insert(ZString("name"), ZVariant(ZString("Alice")));
map.insert(ZString("age"), ZVariant(25));
ZVariant name = map.value(ZString("name")); // "Alice"
bool has = map.contains(ZString("age")); // trueMIT License