2012-11-26 88 views
2

我有strValue作爲NSString,我想將strValue的內容複製到另一個地方。我可以從NSString複製到NSMutableString嗎?

該地點是mstrValue,這是一個NSMutableStringmstrValue的空間已分配。

我想知道如何使用memcpystrcpy來達到此目的。

如果不可能,我想知道其他方式來做到這一點。

+0

[GNUStep Wiki](http://wiki.gnustep.org)上有[NSString指南](http://wiki.gnustep.org/index.php/NSMutableString)。 + stringWithString:, - initWithString:, - appendString和 - setString: - 上面提到的後兩個,會做你想做的。 – hd1

回答

11

你的問題是不是太清楚,但如果你想在可變的字符串的值設置爲其他字符串,則做到這一點:

[mstrValue setString:strValue]; 

如果要追加值,那麼做到這一點:

[mstrValue appendString:strValue]; 

這兩個假設,在某些時候你做的事:

mstrValue = [[NSMutableString alloc] init]; 

看一看的d ocs爲NSMutableString。有很多方法可以更新它的值。

+0

我誤解了[mstrValue setString]返回其他NSMutableString。你很厲害。謝謝。 – eon

+0

不,「NSMutableString setString」不會返回另一個「NSMutableString」。它修改接收器。看看這個方法的文檔。返回類型是'void'。 – rmaddy

+0

我知道。你是對的。你的回答使我看到了文檔,並且我意識到返回類型是無效的。謝謝,我對我的英語很抱歉。 – eon

0

我總是比較喜歡用[NSString [email protected]"%@", strValue];,因爲那樣你明顯得到一個新的自動釋放字符串,並且可以正確地處理字符串「strValue」。

NSMutableString *mstrValue = [NSMutableString stringWithFormat:@"%@", strValue];

OR

NSMutableString *mstrValue = [NSMutableString stringWithString:strValue];

+1

除非你實際上有字符串格式來處理,否則不要使用任何字符串格式方法。你的第二個選擇很好,但避免第一個。 – rmaddy

+0

你說得對,但我的意圖是獲得一個新的自動釋放字符串作爲提問者想要不同的可變字符串的實例 –

+0

正確。你的第二個選擇很好。雖然第一個工作,但應該避免,因爲你實際上沒有處理字符串格式。這種用法效率低得多。 – rmaddy

0

你應該避免,除非你想妥善處理字符串編碼使用的memcpy或strcpy的。

0

是與對象分配:

NSMutableString *mstrValue = [[NSMutableString alloc] initWithString:strValue];

你可以做到這一點。

相關問題