我爲一個項目使用了C風格的字符串,而且我對自己有些困惑。我正在檢查字符串以查看它們的前綴(zone_,player_等),然後獲取字符串的其餘部分。strncpy()得到字符串的結尾
else if(strncmp(info, "zone_", 5) == 0)
{
int len = strlen(info);
char *zoneName = new char[len];
strncpy(zoneName, &info[5], len-5);
Msg("Zone Selected: %s\n", zoneName);
delete zoneName;
}
雖然我打印出zoneName變量,但它是正確的,除了後面跟着一堆亂碼。我究竟做錯了什麼? (我知道的廢話是char數組是空的休息,但我不知道一個更好的方式來做到這一點)
爲什麼你在C++中再次使用C字符串? – 2010-12-11 10:01:18
'delete [] zoneName;',* not *'delete zoneName;'。 – 2010-12-11 12:08:18