Files
MAX_CARLINK_A270S/MXC_A27-PCB4.5-270T/lib/awtk/awtk/src/csv/README.md
2025-01-21 16:49:37 +08:00

88 lines
2.9 KiB
Markdown

# csv 文件
> 本目录的文件从 [awtk-csv-file](https://github.com/zlgopen/awtk-csv-file) 拷贝而来。如果需要修改,请先修改 [awtk-csv-file](https://github.com/zlgopen/awtk-csv-file),再拷贝过来。
csv 为可选组件,需要自己包含头文件
```c
#include "csv/csv_file.h"
#include "csv/csv_file_object.h"
```
## 示例:
* 普通方式访问
```c
const char* str = "11,12,13\n21,22,23";
csv_file_t* csv = csv_file_create_with_buff(str, strlen(str), ',');
ASSERT_EQ(csv_file_get_rows(csv), 2);
ASSERT_EQ(csv_file_get_cols(csv), 3);
ASSERT_STREQ(csv_file_get(csv, 0, 0), "11");
ASSERT_STREQ(csv_file_get(csv, 0, 1), "12");
ASSERT_STREQ(csv_file_get(csv, 0, 2), "13");
ASSERT_STREQ(csv_file_get(csv, 1, 0), "21");
ASSERT_STREQ(csv_file_get(csv, 1, 1), "22");
ASSERT_STREQ(csv_file_get(csv, 1, 2), "23");
csv_file_destroy(csv);
```
```c
TEST(csv_file, title) {
const char* str = "aa,bb,cc\n11,12,13\n21,22,23";
csv_file_t* csv = csv_file_create_with_buff(str, strlen(str), ',');
ASSERT_EQ(csv_file_get_rows(csv), 3);
ASSERT_EQ(csv_file_get_cols(csv), 3);
ASSERT_STREQ(csv_file_get(csv, 0, 0), "aa");
ASSERT_STREQ(csv_file_get(csv, 0, 1), "bb");
ASSERT_STREQ(csv_file_get(csv, 0, 2), "cc");
ASSERT_STREQ(csv_file_get(csv, 1, 0), "11");
ASSERT_STREQ(csv_file_get(csv, 1, 1), "12");
ASSERT_STREQ(csv_file_get(csv, 1, 2), "13");
ASSERT_STREQ(csv_file_get(csv, 2, 0), "21");
ASSERT_STREQ(csv_file_get(csv, 2, 1), "22");
ASSERT_STREQ(csv_file_get(csv, 2, 2), "23");
ASSERT_STREQ(csv_file_get_by_name(csv, 1, "aa"), "11");
ASSERT_STREQ(csv_file_get_by_name(csv, 1, "bb"), "12");
ASSERT_STREQ(csv_file_get_by_name(csv, 1, "cc"), "13");
ASSERT_STREQ(csv_file_get_by_name(csv, 2, "aa"), "21");
ASSERT_STREQ(csv_file_get_by_name(csv, 2, "bb"), "22");
ASSERT_STREQ(csv_file_get_by_name(csv, 2, "cc"), "23");
ASSERT_EQ(csv_file_get_col_of_name(csv, "aa"), 0);
ASSERT_EQ(csv_file_get_col_of_name(csv, "bb"), 1);
ASSERT_EQ(csv_file_get_col_of_name(csv, "cc"), 2);
csv_file_destroy(csv);
}
```
* 以对象的方式访问:
```c
const char* str = "aa,bb,cc\n11,12,13\n21,22,23";
csv_file_t* csv = csv_file_create_with_buff(str, strlen(str), ',');
object_t* obj = csv_file_object_create(csv);
ASSERT_EQ(object_get_prop_int(obj, "#size", 0), 3);
ASSERT_STREQ(object_get_prop_str(obj, "[0].[0]"), "aa");
ASSERT_STREQ(object_get_prop_str(obj, "[0].[1]"), "bb");
ASSERT_STREQ(object_get_prop_str(obj, "[0].[2]"), "cc");
ASSERT_STREQ(object_get_prop_str(obj, "[1].[0]"), "11");
ASSERT_STREQ(object_get_prop_str(obj, "[1].[1]"), "12");
ASSERT_STREQ(object_get_prop_str(obj, "[1].[2]"), "13");
OBJECT_UNREF(obj);
```
## 具体用法请参考:
* https://github.com/zlgopen/awtk-csv-file/blob/master/tests/csv_file_test.cc
* https://github.com/zlgopen/awtk-csv-file/blob/master/tests/csv_file_object_test.cc