如何在Objective-C中将char数组转换为NSString

时间:2014-02-15 10:53:29

标签: ios objective-c xcode nsstring

我正在尝试从用户那里读取NSString类型的输入,但我找不到NSString的格式说明符,我知道%i用于整数变量,但哪一个是NSString

结果,我创建了一个char数组,读取了用户的输入,但我无法将其转换为NSString,而XCode将我作为输出奇怪的东西,如ø¿_ÿ和有时候(null)我使用了许多字符串编码(没有一个工作):

   NSASCIIStringEncoding 

   NSNEXTSTEPStringEncoding 

   NSJapaneseEUCStringEncoding 

   NSUTF8StringEncoding 

   NSISOLatin1StringEncoding 

   NSSymbolStringEncoding 

   NSNonLossyASCIIStringEncoding

   NSShiftJISStringEncoding 

   NSISOLatin2StringEncoding

   NSUnicodeStringEncoding 

   NSWindowsCP1251StringEncoding 

   NSWindowsCP1252StringEncoding 

   NSWindowsCP1253StringEncoding 

   NSWindowsCP1254StringEncoding 

   NSWindowsCP1250StringEncoding 

   NSISO2022JPStringEncoding 

   NSMacOSRomanStringEncoding

   NSUTF16StringEncoding 

   NSUTF16BigEndianStringEncoding 

   NSUTF16LittleEndianStringEncoding 

   NSUTF32StringEncoding = 0x8c000100

   NSUTF32BigEndianStringEncoding 

   NSUTF32LittleEndianStringEncoding 

   NSProprietaryStringEncoding 

有人可以告诉我为什么吗? 这是我的代码:

 //I have declared a class and called it Labtop
 Labtop *myLabtop;

        myLabtop = [[Labtop alloc] init];

       char input[30];
       NSLog(@"Hello,please enter which brand you will use this time:\n");
        input[29] = getchar();// read the input from the user

      NSString *b =[[NSString alloc] initWithCString:input encoding:NSISOLatin1StringEncoding];//convert from array char to NSString
      [myLabtop labtopBrand:b];//labtopBrand fund will print what the user has entered

结果是:

  

您好,请输入您将使用的品牌:

     

MacBook //这是用户的输入

     

我将使用ø¿_ÿ//这是Xcode向我显示的输出程序已结束   退出代码:0

2 个答案:

答案 0 :(得分:0)

NSString的格式说明符是%@

答案 1 :(得分:0)

这里有一些问题。首先,getchar()返回一个字符,而不是整个字符串。第二,这一行:

    input[29] = getchar();// read the input from the user

只需将input中的最后一个字符分配给用户输入的字符,这可能根本不是您想要的字符。也许你的意思是gets()?除非你真的不应该使用它,因为它没有边界检查,你仍然不希望将结果分配给数组中的第30个字符。也许看一下getline()

此外,您可能希望指定NSUTF8StringEncoding

祝你好运,继续尝试!