20150610_OC之NSString及与C中字符串的区别

//NSString

//创建不可变字符串对象的类


//NSMutableString

//创建可变字符串对象的类


//OC语言完全兼容C语言


//OC字符串与C语言字符串的区别:

//1.OC字符串是一个字符串对象,字符串常量需要用@""包含

//2.C语言字符串用""包含

//3.C语言的字符串以字符的ASCII码形式存储的

//4.OC中的字符串以Unicode编码(万国码)形式存储:UTF-8, UTF-16, UTF-64

//UTF-8:多字节编码

//5.打印OC字符串用%@,打印C语言字符串用%s

//
//  main.m
//  IOS150610_ObjectiveC_NSString
//
//  Created by Peng Junlong on 15/6/10.
//  Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

//****************************
//*                          *
//*         NSString         *
//*                          *
//****************************

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"中国");
        printf("%lu\n",strlen("中国"));//长度为6
        
        NSString *str1 = @"Hello World"; //@"Hello World"是一个字符串常量,存储在常量区        
        str1 = @"Hello China";    //没有改变@"Hello World"的内容,只是改变了str1指向的地址
        NSLog(@"%@",str1);
        
        //格式化创建字符串对象
        //- (instancetype)initWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
        NSString *str2 = [[NSString alloc] initWithFormat:@"%s,%d,%@","Hello",234,@"World"];//构造方法
        NSLog(@"str2 = %@",str2);//结果:str2 = Hello,234,World
        
        //用格式化的类方法创建字符串对象
        //+ (instancetype)stringWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
        NSString *str3 = [NSString stringWithFormat:@"%s,%d,%@","Hello",456,@"China"];//类方法
        NSLog(@"str3 = %@",str3);//结果:str3 = Hello,456,China
        
        //用给定的字符串对象创建字符串对象
        //- (instancetype)initWithString:(NSString *)aString;
        NSString *str4 = @"中国教育";
        NSString *str5 = [[NSString alloc] initWithString:str4];    //  str5和str4指向同一块地址
        NSLog(@"str5 = %@",str5);                           //结果:str5 = 中国教育
        
        //用C的字符串创建OC的字符串对象
        NSString *str6 = [[NSString alloc] initWithUTF8String:"中国海军"];
        NSLog(@"str6 = %@",str6);               //结果:str6 = 中国海军
        
        NSString *str7 = [[NSString alloc] initWithCString:"中国陆战队" encoding:NSUTF8StringEncoding];  //使用指定编码来存储C的字符串
        NSLog(@"str7 = %@",str7);   //结果:str7 = 中国陆战队
//        NSString *str7 = [[NSString alloc] initWithCString:"中国陆战队" encoding:NSUTF16StringEncoding];  //使用指定编码来存储C的字符串
//        NSLog(@"str7 = %@",str7);   //结果:str7 = 룤붛駩颈飩
        
        //创建一个空的字符串对象,@""
        NSString *str8 = [NSString string]; //string是NSString中的类方法,类方法一般都以string开头
        NSLog(@"str8 = %@",str8);           //结果:str8 =
        
        NSString *str9 = [[NSString alloc] init];
        NSLog(@"str9 = %@",str9);           //结果:str9 =
        
        //跟initWithString相对应
        NSString *str10 = [NSString stringWithString:str7];
        NSLog(@"str10 = %@",str10);         //结果:str10 = 中国陆战队
        
        //跟initWithUTF8String相对应
        NSString *str11 = [NSString stringWithUTF8String:"你好中国"];   // 只能是C类型的字符串,不能是OC类型(@"")的字符串,否则会报错
        NSLog(@"str11 = %@",str11);         //结果:str11 = 你好中国
        
        //跟initWithCString相对应
        NSString *str12 = [NSString stringWithCString:"特种部队" encoding:NSUTF8StringEncoding];
        NSLog(@"str12 = %@",str12);
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值