我期待写一个char BUF包装,保证空终止类似如下:找出数组长度静态地使用模板在C++
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。
如果你说'MakeBufStr(“Hello”)',那已经包含一个空终止符,对吗? –
这是一个函数来转换一个非空终止的char buf如char buf [10]为空终止 – stgtscc
当然,标准的“类模板加推导make功能”成语。你刚刚得到一个解释这个答案。 –