我正在寻找一个 char buf 包装器来保证空终止,如下所示:
template<size_t N> class BufStr
{
public:
explicit BufStr(const char(&buf)[N])
{
memcpy(m_buf, buf, N);
m_buf[N-1] = '\0';
}
inline const char* c_str() const { return m_buf; }
protected:
char m_buf[N];
};
但是我想使用签名模板并能够将 char buf 直接传递给构造函数,该构造函数将能够使用 sizeof 确定数组的大小,因此在编译时计算 N 。