我期待寫一個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功能」成語。你剛剛得到一個解釋這個答案。 –