Tôi có một loại số char[]
và tôi muốn sao chép NSString
giá trị trong đó. Làm thế nào tôi có thể chuyển đổi một NSString
thành một mảng char?Chuyển đổi NSString thành mảng char
Trả lời
Sử dụng -[NSString UTF8String]
:
NSString *s = @"Some string";
const char *c = [s UTF8String];
Bạn cũng có thể sử dụng -[NSString cStringUsingEncoding:]
nếu chuỗi của bạn được mã hóa với một cái gì đó khác hơn là UTF-8.
Khi bạn có const char *
, bạn có thể làm việc với nó tương tự như một mảng của chars
:
printf("%c\n", c[5]);
Nếu bạn muốn thay đổi chuỗi, tạo một bản sao:
char *cpy = calloc([s length]+1, 1);
strncpy(cpy, c, [s length]);
// Do stuff with cpy
free(cpy);
Câu trả lời của mipadi là tốt nhất nếu bạn chỉ muốn char*
chứa nội dung của chuỗi, tuy nhiên NSString cung cấp các phương thức để lấy dữ liệu vào một vùng đệm bạn đã tự phân bổ. Ví dụ, bạn có thể sao chép các nhân vật vào một mảng của unichar
sử dụng getCharacters:range:
như thế này:
NSUInteger length = [str length];
unichar buffer[length];
[str getCharacters:buffer range:NSMakeRange(0, length)];
for (NSUInteger i = 0; i < length; i++)
{
doSomethingWithThis(buffer[i]);
}
Nếu bạn phải sử dụng char
, sau đó bạn có thể sử dụng phức tạp hơn getBytes:maxLength:usedLength:encoding:options:range:remainingRange:
như thế này (chứng minh trong Eastern Polish Christmas Tree ký hiệu):
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];
Thay vì getCharacters:range:
, tôi sử dụng:
[stringToCopy getCString:c_buffer maxLength:c_buffer_length encoding:NSUTF8StringEncoding];
Kết quả là char [] (thay vì unichar []), đó là những gì OP mong muốn và những gì bạn có thể muốn sử dụng để tương thích với C.
NSMutableArray *array = [NSMutableArray array];
for (int i = 0; i < [string length]; i++) {
[array addObject:[NSString stringWithFormat:@"%C", [string characterAtIndex:i]]];
}
Trong Swift, mảng char được bắc cầu là UnsafePointer<Int8>
. Truy cập vào các nhân vật hoạt động theo cách tương tự trong Swift cho một NSString
:
let str: NSString = "hello"
let charStr = str.UTF8String // UnsafePointer<Int8>
Đối với một Swift String
đối tượng thứ có một chút khác biệt:
let str = "hello"
let charStr = str.cStringUsingEncoding(NSUTF8StringEncoding)
charStr
là [CChar]?
nơi CChar
là một typeailais cho Int8
.
Chúng ta cần chơi NSString như một mảng ký tự để làm việc trên các thực hành mã hóa, đơn giản hơn nhiều khi thực hiện trong mã hóa C thuần túy. Sử dụng ký tựAtIndex: và appendFormat: giúp tôi. Có thể điều này sẽ giúp.
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);
khác biệt giữa câu trả lời của bạn và .... NSMutableString * strResult = [NSMutableString stringWithString: str]; ? – greenhouse
- 1. Chuyển mảng char thành đối tượng NSString
- 2. Chuyển đổi NSString thành const char
- 3. Cách chuyển đổi mảng byte thành NSString
- 4. Chuyển đổi mảng int thành mảng char
- 5. Chuyển đổi char để NSString
- 6. Chuyển đổi NSString thành unsigned char * cho ứng dụng iphone
- 7. Chuyển mảng char thành unsigned char *
- 8. chuyển đổi const char * thành NSString * và chuyển đổi lại - _NSAutoreleaseNoPool()
- 9. Chuyển đổi NSString thành NSInteger?
- 10. Chuyển đổi CGAffineTransform thành NSString
- 11. chuyển đổi NSDictionary thành NSString
- 12. C++ chuyển đổi char thành const char *
- 13. C Chuyển đổi char thành char *
- 14. Chuyển đổi NSString thành unichar trong iOS
- 15. Chuyển đổi từ chuỗi char thành mảng uint8_t?
- 16. Cách chuyển đổi một phần của mảng char thành chuỗi
- 17. Có thể chuyển đổi char [] thành char * trong C?
- 18. Chuyển đổi Zval thành char *
- 19. Chuyển đổi chuỗi thành char
- 20. .NET/C# - Chuyển đổi char [] thành chuỗi
- 21. PowerShell chuyển đổi Char Array thành chuỗi
- 22. Chuyển mảng char thành mảng byte và ngược lại
- 23. Chuyển đổi NSString dài thành NSNumber
- 24. Xcode iOS: Chuyển đổi int thành NSString
- 25. Cách chuyển đổi NSString thành byte
- 26. Cách chuyển đổi NSNumber thành NSString
- 27. Chuyển đổi chuỗi const char * thành NSString với độ dài và mã hóa
- 28. Thay thế một char thành NSString
- 29. Chuyển đổi char [] mảng để String
- 30. Làm thế nào để chuyển đổi NSString thành chuỗi C?
Anh ấy yêu cầu mảng char là một ký tự const – JonasG
@Maxner: Đó là con trỏ * tới chuỗi ký tự const. – mipadi
Im tìm kiếm một câu trả lời hoàn chỉnh cho thấy mã từ 'NSString * someString' đến' char myArray [] = .. '.Tôi thực sự cần điều này, bạn có thể vui lòng cập nhật câu trả lời của bạn? chúc mừng – JonasG