關閉蝙蝠 - 我是C++的新手。連接2個char *會產生奇怪的結果
所以我正在處理的情況下,我有兩個char*
需要連接並傳遞到另一種方法。這應該是簡單的,但我就是想不通......
第一炭和參考getMetaData()
方法聲明
virtual const char *getMetaData() const = 0
char* metaChar = const_cast<char*>(result->getMetaData());
第二個字符,並以供參考getUniqueTargetId()
方法聲明
virtual const char *getUniqueTargetId() const = 0
char* idChar = const_cast<char*>(result->getUniqueTargetId());
現在我需要將它們合併到方法setUserData()
。以下是聲明它:
virtual bool setUserData(void *userData) = 0
現在,如果我通過各那些char
進入setUserData()
方法單獨,它工作正常。如果我嘗試連接它們,然後傳遞結果,它會產生nil
或一些看起來像拉丁文的隨機字符。
我試過以下(加上其他一些和變化):
- 每個轉換爲NSString的,concatonate那些,轉換回
char
- 試圖concatonate兩個
char
陣列 - 鑄造各種不同的東西和來回
- 關掉它又回來
- 檢查了的類型和上面的選項1的結果和它們對應 - 顯然如出一轍
再次 - 我是新一輪的這些部件......有可能是一些明顯我失蹤,但它一直是一個小時數現在這似乎是一個不應該佔用這麼多時間的問題。
使用'const_cast'去除'const'然後使用轉換的結果是UB – SingerOfTheFall
@SingerOfTheFall:只有在非const的上下文中使用轉換的結果。 – Bathsheba
@Bathsheba,真的,我應該說「可能導致UB」。 – SingerOfTheFall