VS2019【C++報錯】E0144"const char *" 類型的值不能用于初始化 "char *" 類型的實體

利用VS2019編寫以下C風格的代碼時,會出現E0144報錯:

    char* text = "Hello world";
    //初始化字符型指針出現報錯
image

網上查了一下,一部分人說是vs版本兼容性問題,新版本vs2017,2019都會遇到這個問題,新版本vs對此有更嚴格的要求。

目前總結到了3種解決方法,親測有效,可以根據你的使用習慣選擇一種方法。

  • 方法1,不改代碼,修改項目屬性。項目>>屬性>>C/C++>>語言>>符合模式,將符合模式由是改為否(優點是不需要修改代碼,缺點是每寫新的項目就要修改一次設置)


    image
  • 方法2,修改代碼,先用另外的字符數組存儲Hello world,再對字符型指針進行初始化
    char ch1[] = "Hello world";
    char* text = ch1;
  • 方法3,修改代碼,將char類型強轉為char*
    char* text = (char*)"Hello world";

事實上,在我看來,使用c++時可以利用STL標準庫#include<string>來滿足你的需求,相比于傳統c風格的#include<cstring>更靈活,不會出現莫名其妙的錯誤。強制類型轉換也可以使用static_cast<>(),這里就不嘗試了。

以上就是【"const char *" 類型的值不能用于初始化 "char *" 類型的實體】報錯的解決方法了,希望對大家有所幫助~

如果覺得我的文章對你起到了些許的幫助,做下手指操點擊下面的大拇指??感謝~
我是專注自動駕駛、Lidar感知、三維點云處理、激光SLAM領域的阿川,歡迎各位志同道合的朋友在下面積極留言。欲將心事付瑤琴,希望能在交流中收獲知識、經驗和摯友??

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,719評論 0 3
  • 說明本次redis集群安裝在rhel6.8 64位機器上,redis版本為3.2.8,redis的gem文件版本為...
    讀或寫閱讀 15,073評論 3 9
  • 文中的實驗代碼我放在了這個項目中。 以下內容是我通過整理[這篇博客] (http://yulingtianxia....
    茗涙閱讀 944評論 0 6
  • 從日頭下落,漸漸沉沒,我收起美好起身離開,眼中無塵世,收些光景作夢食。 一步一步往閨中走,謊話都拋給黃昏,海的那一...
    過量閱讀 216評論 1 1
  • 精神分析的人格形成是潛意識作用,它是看不見、摸不著的。行為主義和社會認知理論不太贊成,接下來我們看看這二個流派是怎...
    12_德德閱讀 513評論 0 1