[英]Initializing to a dynamically allocated const char array from a const char array
我正在嘗試編寫將 const char 數組分配給動態分配的 const char 數組的代碼。 我試着這樣做
const char staticArray[4] = "abc";
const char * ptrDynamicArray;
ptrDynamicArray = new const char[4](staticArray);
但是我收到一個錯誤(“數組 new [-fpermissive] 中的括號初始化器”)。
我有兩個問題:
我怎樣才能解決它——比如關閉它(我使用的是 Code::Blocks 16.01)?
我可以以其他方式初始化動態分配的 const char 數組嗎?
重載新的運算符將完成您的工作。
void * operator new[](size_t n, const char *s) {
void *p = malloc(n);
strcpy((char *)p, s);
return p;
}
現在可以像這樣調用 new 運算符:
const char staticArray[4] = "abc";
const char * ptrDynamicArray;
ptrDynamicArray = new (staticArray) char[4];
您不能直接從另一個數組復制初始化數組,因此會出現錯誤。 您要么需要手動復制元素(或使用std::copy
),或者更好,如果您想要“復制”數組,請改用std::array<char, 4>
。
但是,正如評論中提到的,最好的可能是在此處使用std::string
,並使用其std::string::c_str()
成員函數,以防您需要將const char*
指針傳遞給舊的 C-像接口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.