csv文件解析
CSV简单的读取
CSV代表Comma Separated Values。CSV文件是一种纯文本文件,用于存储表格和电子表格信息。内容通常是由文本、数字或日期组成的表格。使用将数据存储在表中的程序可以轻松导入和导出CSV文件。
CSV文件格式
通常CSV文件的第一行包含表格列标签。后面的每一行表示表中的一行。逗号分隔行中的每个单元格,这就是名称的来源。
下面是一个CSV文件的示例。
正常txt文本打开(程序读取的形式)
电子表格形式
其实读取csv文件就是读取正常的字符串文件,就是记住csv格式
每一行的每个对象之间用逗号分割,行与行之间就是换行符,不用逗号,塔防游戏就用来存放地图瓦片数据
直接根据实例解释
1 | bool load(const std::string& path) |
getline(file, str_line)
一行一行读取csv文件,读入string类,一行的内容指导换行符,为了保证读取争取必须删除最后的的可能存在的空格
1
2
3
4
5
6
7
8
9
10
11
12
13
14std::string trim_str(const std::string& str)
{
size_t begin_idx = str.find_first_not_of(" \t"); //该函数时返回第一个不在提供字符串的字符索引
if (begin_idx == std::string::npos) //npos表示查询越界全空,返回空字符串
return "";
size_t end_idx = str.find_last_not_of(" \t"); //找到最后的一个不是换行或者空格
size_t idx_range = end_idx - begin_idx + 1; //计算有效字符串的范围
return str.substr(begin_idx, idx_range); //截取需要的字符串
//“2/2,3/2,3/2 ”->处理后“2/2,3/2,3/2”(空格没了)
}然后依次以逗号为分割符依次读取每一个瓦片数据
1 | while (std::getline(str_stream,str_tile,',')) |
然后瓦片又以“/”为分隔符读取
1 | while (std::getline(str_stream, str_value, '\\')) //从str_stream中逐个读取到str_value,,然后去转换 |