2012-08-31 35 views
1

我具有包含字符数组这样一个结构:的NSString固定长度字符数组转换

char name[10]; 

现在我需要一种方法来的NSString转换为这种类型的字符串。

我已经可以这个字符串转换成的NSString:

NSString *string = [[NSString alloc] initWithBytes:name length:10  
encoding:NSASCIIStringEncoding]; 

回答

0

您可以getCString:maxLength:encoding:方法NSString做到这一点:

char name[10]; 
NSString *s = @"Hello"; 
[s getCString:name maxLength:10 encoding:NSASCIIStringEncoding]; 
+0

这就是我现在如何将一个NSString转换为char数组: 'char name [10]; NSString * str = @“John”; [str getCString:name maxLength:10 encoding:NSASCIIStringEncoding]; ' ,这是从一个字符数组转换成的NSString '的NSString * stringB = [NSString的stringWithCString:名称编码:NSASCIIStringEncoding];' 感谢您的帮助。 – QuerrrY

0

全部转换过程来回:

// from NSString through char* to NSString again 
NSString *text = @"long text or short"; 
const char *constName = [text UTF8String]; 

char *name = malloc(sizeof(unichar) * text.length + 1); 
memcpy(name, constName, sizeof(unichar) * text.length); 

NSString *fromChar = [NSString stringWithUTF8String:name]; 

NSLog(@"%@", fromChar); 

free(name); 
+0

这不起作用,因为在这种情况下我不能使用任何指针。 – QuerrrY

+0

你是什么意思_你不能使用任何pointer_? **当你定义'char name [10];''它与'char * name;'和'name = malloc(sizeof(char)* 10)''行非常相似时,你已经使用了指针**。你能澄清你的评论吗? – holex

+0

OK,该字符串是分配为数组的结构的一部分。当结构中没有指针时,我可以通过将字节直接复制到内存中来将整个数组保存到磁盘。用指针这不会是这么简单,特别是有几个指针。无论如何感谢你的努力。 – QuerrrY