【问题标题】:UTF8String for non const stringUTF8String 用于非 const 字符串
【发布时间】:2013-05-28 00:20:45
【问题描述】:

我找到了一种将字符串设置为 char 数组的方法。我使用以下代码:

NSString *string = [[NSString alloc] initWithFormat:@"This is a string!"];
char *c = [string UTF8String];

但是,我收到警告,“使用 'const char' 表达式类型初始化 'char ' 会丢弃限定符。

它工作得很好,但我觉得有更好的方法可以做到这一点,我宁愿没有大量的警告。有人有什么建议吗?

【问题讨论】:

标签: objective-c nsstring arrays


【解决方案1】:

[NSString UTF8String] 返回的值是一个指向字符常量数组的指针。您不能直接删除“const”。

如果您想要一个非常量的字符数组,您必须使用方法strcpy(...) 复制字符串。您必须声明并初始化一个字符数组,然后将给定字符串的值复制到里面:

NSString *string = @"This is a string";
char cString [string.length]
strcpy(cString, string.UTF8String);
NSLog(@"Copied String: %s", cString);

或者如果您更喜欢自己管理内存:

NSString *string = @"This is a string";
char * cString = malloc(sizeof(char)*string.length);
strcpy(cString, string.UTF8String);
NSLog(@"Copied String: %s", cString);
free(cString);

【讨论】:

    【解决方案2】:

    使用 const char 你也可以使用不同类型的编码:

    const char* c = [字符串 cStringUsingEncoding:NSUTF8StringEncoding];

    【讨论】:

      【解决方案3】:

      NSFileManager *fileMgr = [NSFileManager defaultManager];

      if (![fileMgr fileExistsAtPath:pathOfDB]) {
      
          const char *pathDB = [pathOfDB UTF8String];
      

      【讨论】:

      猜你喜欢
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 2011-09-21
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多