我有一個類型爲char[]
的變量,我想在其中複製NSString
值。如何將NSString
轉換爲char數組?將NSString轉換爲字符數組
回答
NSString *s = @"Some string";
const char *c = [s UTF8String];
你也可以使用-[NSString cStringUsingEncoding:]
如果你的字符串與UTF-8以外的其他東西進行編碼。
一旦你的const char *
,你可以用它的工作方式類似於的chars
數組:
printf("%c\n", c[5]);
如果要修改字符串,做一個副本:
char *cpy = calloc([s length]+1, 1);
strncpy(cpy, c, [s length]);
// Do stuff with cpy
free(cpy);
如果你只是想要一個包含字符串內容的char*
,mipadi的答案是最好的,但是NSString提供了獲取數據到緩衝區的方法在你分配自己。例如,可以使用getCharacters:range:
這樣的字符複製到的unichar
數組:
NSUInteger length = [str length];
unichar buffer[length];
[str getCharacters:buffer range:NSMakeRange(0, length)];
for (NSUInteger i = 0; i < length; i++)
{
doSomethingWithThis(buffer[i]);
}
如果必須使用char
,則可以使用更復雜的getBytes:maxLength:usedLength:encoding:options:range:remainingRange:
像這樣(在Eastern Polish Christmas Tree符號證實):
NSUInteger length = [str length];
NSUInteger bufferSize = 500;
char buffer[bufferSize] = {0};
[str getBytes:buffer
maxLength:(bufferSize - 1)
usedLength:NULL
encoding:NSUTF8StringEncoding
options:0
range:NSMakeRange(0, length)
remainingRange:NULL];
不是getCharacters:range:
,我使用:
[stringToCopy getCString:c_buffer maxLength:c_buffer_length encoding:NSUTF8StringEncoding];
結果是一個char [](而不是unichar []),這是OP想要的,以及您可能想要用於C兼容性。
NSMutableArray *array = [NSMutableArray array];
for (int i = 0; i < [string length]; i++) {
[array addObject:[NSString stringWithFormat:@"%C", [string characterAtIndex:i]]];
}
在Swift中,字符數組被橋接爲UnsafePointer<Int8>
。訪問角色的工作原理相同的方式在斯威夫特爲NSString
:
let str: NSString = "hello"
let charStr = str.UTF8String // UnsafePointer<Int8>
對於斯威夫特String
對象的事情有一點不同:
let str = "hello"
let charStr = str.cStringUsingEncoding(NSUTF8StringEncoding)
charStr
是[CChar]?
其中CChar
是Int8
一個typeailais。
我們需要將NSString作爲字符數組來處理編碼實踐,否則在純C編碼中要簡單得多。使用characterAtIndex:和appendFormat:幫助我。可能會有所幫助。
NSString *str = @"abcdef";
NSMutableString *strResult = [NSMutableString string];
for (NSUInteger i = 0; i < [str length]; i++) {
char ch = [str characterAtIndex:i];
[strResult appendFormat:@"%c", ch];
}
NSLog(@"%@", strResult);
什麼是你的答案和....之間的區別。NSMutableString * strResult = [NSMutableString stringWithString:str]; ? – greenhouse 2018-02-13 07:10:58
- 1. 轉換NSString爲字符數組
- 2. 將NSString轉換爲char字節數組
- 3. iPhone:將NSString(Unicode字符串)轉換爲char數組並反轉
- 4. 將NSString轉換爲NSMutable字符串
- 5. 將C++字符串轉換爲NSString
- 6. 將NSString(contentsOfURL:...)轉換爲字符串?
- 7. 將Unicode字符轉換爲NSString
- 8. IOS將URL字符串轉換爲NSString?
- 9. 將NSString轉換爲字符串
- 10. 將std字符串轉換爲nsstring
- 11. 將C無符號字符數組與中間字符轉換爲Objective-C NSString
- 12. 將NSString轉換爲字節
- 13. 如何將NSString轉換爲數組?
- 14. 將char數組轉換爲NSString對象
- 15. 將數組中的NSString轉換爲NSDates
- 16. 轉:將字符串數組轉換爲Json數組字符串
- 17. 將json轉換爲數組php將數組轉換爲字符串轉換
- 18. 將字符替換爲NSString
- 19. 如何將一個NSString數組轉換爲一個c數組的字符串?
- 20. 將字符數組轉換爲整數
- 21. 將字符數組轉換爲整數
- 22. 將字符數組轉換爲整數
- 23. 將字符數組轉換爲整數
- 24. 將NSString轉換爲整數
- 25. 將NSString轉換爲小數
- 26. 將轉換爲字符串的數組轉換回數組
- 27. 幫助將NSString的int轉換爲ASCII字符的NSString?
- 28. 將字符數組轉換爲Unicode
- 29. 將字符串轉換爲int數組
- 30. MongoDB將字符串轉換爲數組
他要求一個char數組這是一個const char – JonasG 2012-03-21 14:39:34
@Maxner:這是一個*指針,指向一個常量字符串。 – mipadi 2012-03-21 14:50:06
我正在尋找一個完整的答案,顯示從'NSString * someString'到'char myArray [] = ..'的代碼。我真的需要這個,你能否更新你的答案?歡呼聲 – JonasG 2012-03-21 17:40:00