如果是搞 Windows 开发的话可以看看 wil
https://github.com/microsoft/wil主要是 RAII resource wrappers
https://github.com/microsoft/wil/wiki/RAII-resource-wrappers虽然 RAII 并不是非常 modern 的特性了,可能 C++03 甚至 C++98 都能用,但个人认为用简单的一层 RAII 封装代替手动释放资源是很典型的把 C 语言代码现代化为 C++代码的方案。另外 wil 仅仅是封装了指针本身,相比 MFC 那种把函数都封装的库,前者恰到好处,代码量不大。
虽然 wil 是给 Windows 用的,但实际上许多代码是与系统无关的,可以提出来拿到别的系统用。个人希望有个现成的类似的 wil 库可以在 Linux 等系统上用,C++标准库里的 unique_ptr 可以解决部分问题,但没有 wil 那么灵活,比如 POSIX open 打开文件后返回的是 int 的 fd ,此时就不能用 unique_ptr 了。
还有一个技巧是标准库的 std::string 和 std::vector 可以 resize 后用 data()获取内部 buffer ,然后作为缓冲区传递给一些 C API ,可以减少一次拷贝。