我試圖創建一個數組的字符串::大小的成員,但它抱怨在「char消息[msgSize]」表達式沒有評估一個常量。C++創建一個字符串::大小的數組
但是,它讓我聲明「msgSize」。
這怎麼可能?爲什麼我允許一個常量,但我不允許將它用於需要const的東西。
如果答案是:「該字符串的大小可能會改變」,那麼可以使用sizeof()的相同的參數,但這是有效的。
const unsigned int msgSize =
saveAs.size() +
sizeof("NOTE| sent get request to: ") + 10;
char message[msgSize];
memset(message, 0, msgSize);
sprintf_s(message, msgSize,"NOTE| sent get request to: %s", saveAs.c_str());
_cRec->output(message);
'sizeof'可以在編譯時進行評估,而'string.size()'不能。 – nwp
「const」變量和常量表達式之間有一個重要的區別。 – aschepler
'const'不是'constexpr'。如果你的編譯器可以認爲'const'是一個常量表達式,就像'sizeof'一樣,它可以讓你用它作爲'constexpr'變量,但是如果你拋出一個只有運行時的表達式,比如'saveAs。 size()' –