簡體   English   中英

使用 new 運算符在聲明時初始化 char*

[英]Initialize char* at the time of declaration using new operator

C++ 代碼

char *ptr=new char("char_pointer_initialization");

投擲

error Invalid conversion from 'const char*' to 'char' [-fpermissive]

我該如何解決?

char *ptr=new char("char_pointer_initialization");

嘗試分配單個char並使用const char*對其進行初始化,因此出現錯誤消息。

不像沒有new的聲明

char arr[] = "char_pointer_initialization";

使用newchar數組使用內聯初始化的唯一方法是編寫

char *ptr=new char[40]{ 'c', 'h', 'a', 'r', '_', 'p', ..., '\0' };

請參閱一個工作示例


我建議改用std::string ,這樣你就可以簡單地寫

std::string s = "char_pointer_initialization";

如果你需要一個const char*你可以使用std::string::c_str()函數。

我建議你閱讀新的表達方式。 如果你有類似的東西

new type(value)

這意味着

  1. 分配給定類型的單個對象並
  2. 用給定的值初始化它

在你的情況下,你有

new char("char_pointer_initialization");

所以你試圖分配一個單一的字符並用“char_pointer_initialization”初始化它,它是一個指向 const char 的指針。 這就是為什么您invalid conversion from cost char* to char錯誤的invalid conversion from cost char* to char

除了使用 std::string 之外,要解決您的問題,您還需要使用 operator new ( new [] ) 的數組版本,然后復制字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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