[C] 每天來點字串用法(3) - from const char* to char

文章推薦指數: 80 %
投票人數:10人

這次沒有拖到欸d(`・∀・)b(然而三年後拖到了) 今天帶來的不是函式,而是一個小技巧:. 由 const char* 轉成 char*. 有時候可能在將字串傳入函式 ... 由constchar*轉成char* [C]每天來點字串用法(3)-fromconstchar*tochar* Sky 2021-03-06 這次沒有拖到欸d(`・∀・)b(然而三年後拖到了) 今天帶來的不是函式,而是一個小技巧: 由constchar*轉成char*有時候可能在將字串傳入函式時,會出現以下錯誤: error:invalidconversionfrom'constchar*'to'char*' note:expected'char*'butargumentisoftype'constchar*' 這是因為constchar*沒辦法自動轉換成char*,那麼基本上是沒救了啦,不過有一些方法可以繞過編譯器檢查或達到與轉換型別相同的效果: 直接修改函式參數的型態定義,但原本函式庫裡的宣告根本不能改。

用const_cast(cptr),這個雖然可以強制轉換,但若透過轉換後的指標更改常數的值,將會是undefinedbehavior。

使用上一篇提到的strcpy(),但小心緩衝區覆蓋,或是使用到不知道指到什麼的指標。

下面這裡提供2.和3.的使用範例: #include #include #include usingnamespacestd; intmain(){ stringstr("helloworld"); cout<(str.c_str()); ptr1[2]='r';//undefinedbehavior cout<



請為這篇文章評分?