FAQ
为什么没有用 googletest 等测试框架?
测试框架也是自己写的,参见项目
为什么有时候 str::dirname 与 std::dirname_view 的返回值不同?
这其实是一个很无奈的设计:
str::dirname_view(s) 函数返回的数据类型是 std::string_view。
而 str::dirname(s) 函数返回值是 std::string 类型。
str::dirname_view(s) 必须确保返回值必须是输入串的子串,但 str::dirname(s) 却没有这个限制。
假设表示路径的字符串 s 被赋值为 std::string s = "foo.txt"; ,
显然其目录名(即 dirname)应该是 "."。
然而 "." 并不是 "foo.txt" 的子串, 这导致 str::dirname_view(s) 没有办法返回 "."。
所以,str::dirname 与 std::dirname_view 的功能并非总是一致的。
大部分场景下,我们应该使用 str::dirname 而非 std::dirname_view,str::dirname
总是确保返回一个有意义的字符串路径,它不仅更安全,也不容易遇到一些边角场景的错误。