簡體   English   中英

從 const char 數組初始化為動態分配的 const char 數組

[英]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] 中的括號初始化器”)。

我有兩個問題:

  1. 我怎樣才能解決它——比如關閉它(我使用的是 Code::Blocks 16.01)?

  2. 我可以以其他方式初始化動態分配的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM