ios之NSString的用法

本文详细介绍了NSString的各种创建方法,包括直接赋值、初始化等,并演示了如何利用格式化字符串及从文件中读取字符串。此外,还展示了如何将字符串导出到文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于NSString的用法,,具体见以下代码,该注释的地方都已经注释了。

//
//  main.m
//  NSString
//
//  Created by mj on 13-4-5.
//  Copyright (c) 2013年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>

#pragma mark NSString的创建
void stringCreate() {
    // char *s = "A String!"; // C语言中的字符串
    
    // 这种方式创建出来的字符串是不需要释放的
    NSString *str1 = @"A String!";
    
    NSString *str2 = [[NSString alloc] init];
    str2 = @"A String!";
    [str2 release];
    
    NSString *str3 = [[NSString alloc] initWithString:@"A String!"];
    [str3 release];
    // 静态方法,不需要管理内存
    str3 = [NSString stringWithString:@"A String!"];
    
    
    NSString *str4 = [[NSString alloc] initWithUTF8String:"A String!"];
    [str4 release];
    str4 = [NSString stringWithUTF8String:"A String!"];
    
    NSString *str5 = [[NSString alloc] initWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];
    
    // 这句代码放在中间会造成2个错误:
    // 1.前面创建的字符串没有被释放
    // 2.后面创建的字符串会释放过度,造成野指针错误
    // str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];
    
    NSLog(@"str5:%@", str5);
    [str5 release];
    
    str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];
}

void test(NSString **str) {
    *str = @"123";
    // s = @"123";
}

void stringCreate2() {
    // 从文件中读取文本
    NSString *path = @"/Users/apple/Desktop/test.txt";
    // 这个方法已经过期,不能解析中文
    // NSString *str1 = [NSString stringWithContentsOfFile:path];
    
    // 定义一个NSError变量
    NSError *error;
    // 指定字符串编码为UTF-8: NSUTF8StringEncoding,当读取失败时,,系统会把错误信息写入error变量中,所以要传入error的地址。
    NSString *str1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
    if (error == nil) { // 没有错误信息
        NSLog(@"读取文件成功:%@", str1);
    } else {
        NSLog(@"读取文件失败:%@", error);
    }
    
    //用URL方式读取文件,注意file:后面是3个斜杠
    NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/test.txt"];
    NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@", str2);
    
    //远程URL方式读取文件
    NSURL *url2 = [NSURL URLWithString:@"http://www.baidu.com"];
    NSString *str3 = [NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@", str3);
}

#pragma mark 字符串的导出
void stringExport() {
    NSString *str = @"123456我是字符串!!!!";
    // 如果文件不存在,会自动创建文件
    // 如果文件夹不存在,会直接报错
    NSString *path = @"/Users/apple/Desktop/abc.txt";
    
    NSError *error;
    // 编码指定错误也会报错
    // YES代表要进行原子性操作,也就是会创建一个中间的临时文件
    [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];
    if (error) {
        // [error localizedDescription]会返回主要的错误信息
        NSLog(@"写入失败:%@", [error localizedDescription]);
    } else {
        NSLog(@"写入成功");
    }
}

//void test2(int *p) {
//    *p = 9;// a = 9;
//}

int main(int argc, const char * argv[])
{

    @autoreleasepool {
//        int a = 10;
//        test2(&a);
//        NSLog(@"%i", a);
        
        stringExport();
        
//        NSString *s = @"456";
//        
//        test(&s);
//        
//        NSLog(@"%@", s);
    }
    return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值