iOS中的数组操作大全

iOS中的数组操作大全,赶紧收藏吧

(注意:数组中出现中文时直接NSLog(@" %@",array)输出为被转码的字符串,是正常的,内容已存储在了数组中,但要直接输出中文需要通过其他方法编码解析)


#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    
    
//    int arr[10] = {1,2,43};
    //________________不可变数组NSArray_________________
    
    //创建方式
    NSString *s1 = @"张三";
    NSString *s2 = @"小白";
    NSString *s3 = @"大白";
    
    /**
     <1> alloc方式,数组的最后会有一个nil,代表数组的结尾
     创建了一个数组,数组中有三个元素
     */
    NSArray *array = [[NSArray alloc] initWithObjects:s1,s2,s3, nil];
    
    //<2> 类方法创建
//    [NSArray arrayWithObjects:s1,s2,s3, nil];
    
    //2.创建了一个数组,此数组中的元素,来自于array
    NSArray *array1 =  [[NSArray alloc] initWithArray:array];
//    [NSArray arrayWithArray:(NSArray *)];
    
    //3.创建一个数组,只有一个元素
//    NSArray *array3 = [NSArray arrayWithObject:s1];
    
 //_________________常用方法_____________________
    
    
    //1.通过下标取元素 objectAtIndex
    NSArray *arr = [[NSArray alloc] initWithObjects:s1,s2,s3, nil];
    NSString *s = [arr objectAtIndex:0];
    
    //2.获取数组的元素个数
    NSInteger count = [arr count]; //3等价于 arr.count
    
    
    //3.是否包含某个对象
    if ([arr containsObject:s1]) {
        
        NSLog(@"包含张三这个元素");
    }
    
    //4.通过元素获取对应的下标
    NSInteger a = [arr indexOfObject:@"daisdhais"];
    
    //如果数组中没有此元素
    if (a == NSNotFound) {
        
        NSLog(@"数组中没有此元素");
    }
    
    //5.获取最后一个元素
    NSString *str = [arr lastObject];
    
    //6.获取第一个元素
    NSString *str1 = [arr firstObject];
    
    //7.追加一个元素(会产生新的数组,以前的数组并没有改变)
    NSArray *arr2 = [arr arrayByAddingObject:@"赵6"];
    
//    [arr arrayByAddingObjectsFromArray:<#(NSArray *)#>];
    
//_____________________遍历数组_____________________
    
    //1.普通遍历
    for (NSInteger i = 0; i < arr.count ; i++) {
        
        //取出对应的元素
        NSString *s =  [arr objectAtIndex:i];
        
        NSLog(@"s = %@",s);
        
    }
    
    //2.快速遍历
    for (NSString *s in arr) { //没有下标
        
        NSLog(@"s = %@",s);
        
    }
    
    /**
     *  数组注意点:
     
     1.数组越界  beyond bounds [0 .. 2]
     
     2.OC数组中只能存放对象,而且不能为空
     
     */
    
//    [arr objectAtIndex:4]; 程序崩溃,导致软件闪退

 
    /**
     *  数组的新语法
     */
    NSArray *arr4 = [NSArray arrayWithObjects:s1,s2,s3, nil];
    
    //等价于上面,创建数组的新语法
    NSArray *arr5 = @[s1,s2,s3];
    
    //访问元素的新语法
    NSString *string = arr5[0];
    
    
        return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JSONCPP是一个用于解析和生成JSON数据的C++库。要读入数组,首先需要导入jsoncpp库,并包含相关的头文件: ```cpp #include <iostream> #include <fstream> #include <json/json.h> ``` 然后,可以使用Json::Value对象来解析JSON数据。假设我们有一个JSON文件,存储了一个包含多个元素数组,文件名为data.json: ```json { "array": [1, 2, 3, 4, 5] } ``` 我们可以按照以下步骤读入数组: ```cpp int main() { // 读JSON文件 std::ifstream file("data.json"); std::string str; // 将文件内容读入字符串 if (file) { file.seekg(0, std::ios::end); str.reserve(file.tellg()); file.seekg(0, std::ios::beg); str.assign((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>()); file.close(); } // 解析JSON数据 Json::Value root; Json::CharReaderBuilder builder; Json::CharReader* reader = builder.newCharReader(); std::string errors; // 解析字符串为JSON对象 bool parsingSuccessful = reader->parse(str.c_str(), str.c_str() + str.size(), &root, &errors); if (!parsingSuccessful) { std::cout << "Failed to parse JSON: " << errors; return 1; } // 读数组 Json::Value array = root["array"]; if (array.isArray()) { for (int i = 0; i < array.size(); ++i) { std::cout << array[i].asInt() << " "; } } return 0; } ``` 以上代码读JSON文件data.json,将其内容解析为JSON对象,并获名为"array"的数组。然后,我们遍历数组的每个元素,并打印出来。输出结果为: ``` 1 2 3 4 5 ``` 这样就实现了使用jsoncpp读入数组的功能。 ### 回答2: 使用jsoncpp读数组可以分为以下几个步骤: 1. 引入jsoncpp库,可以从官方网站https://github.com/open-source-parsers/jsoncpp下载源码,并进行编译安装。 2. 在代码包含json.h头文件。 3. 定义一个Json::Value对象来存储读入的JSON数据。 4. 使用Json::Reader对象来解析json字符串并存储到Json::Value对象。 下面是一个简单的示例代码: ```cpp #include <json/json.h> #include <iostream> #include <fstream> #include <string> int main() { std::ifstream file("data.json"); // 打开json文件 Json::Value root; // 定义一个Json::Value对象 Json::Reader reader; // 定义一个Json::Reader对象 if (!reader.parse(file, root)) { // 解析json文件 std::cout << "解析错误!" << std::endl; return 1; } file.close(); // 关闭文件 Json::Value arrayValue = root["array"]; // 获json数组 if (!arrayValue.isArray()) { // 判断是否为数组 std::cout << "不是一个有效的数组!" << std::endl; return 1; } for (int i = 0; i < arrayValue.size(); i++) { // 遍历数组 std::cout << "数组元素" << i << ": " << arrayValue[i].asString() << std::endl; } return 0; } ``` 假设data.json文件的内容为: ```json { "array": [ "元素1", "元素2", "元素3" ] } ``` 上述代码将会输出: ``` 数组元素0: 元素1 数组元素1: 元素2 数组元素2: 元素3 ``` 这样就完成了使用jsoncpp读数组操作。 ### 回答3: JSONCpp是一个用于处理JSON格式数据的C++库。它可以读JSON格式的数据,并提供了相应的方法和函数来解析和访问JSON的数据。 要读入一个JSON数组,可以按照以下步骤进行操作: 1. 首先,引入JSONCpp的头文件和命名空间: ```cpp #include <json/json.h> using namespace Json; ``` 2. 创建一个`Value`对象来保存JSON数据: ```cpp Value root; ``` 3. 使用`Reader`类的`parse`方法来解析JSON数据,并将解析结果保存到`Value`对象: ```cpp Reader reader; if (!reader.parse(jsonData, root)) { // 解析失败 } ``` 其,`jsonData`是一个字符串,用于存储JSON数据。 4. 确认解析结果是否为数组类型,若不是数组类型则表示解析失败: ```cpp if (!root.isArray()) { // JSON数据不是数组类型 } ``` 5. 遍历数组,可以使用循环来逐个访问数组的元素: ```cpp for (unsigned int i = 0; i < root.size(); i++) { // 访问数组元素 Value element = root[i]; // 对元素进行处理... } ``` 通过以上步骤,就可以成功读JSON数组的数据了。注意需要根据实际情况进行错误处理和数据类型的判断,以确保程序能正确地读和处理JSON数组

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值