当前位置:   article > 正文

[C++]C/C++中读写.csv文件_c++ csv

c++ csv

csv介绍

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

CSV文件的格式不存在通用标准,也没有指定所使用的字符编码,但是在RFC 4180中有基础性的描述, 而7-bit ASCII是最基本的通用编码。

CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。

例如,一个用户可能需要交换信息,从一个以私有格式存储数据的数据库程序,到一个数据格式完全不同的电子表格。最可能的情况是,该数据库程序可以导出数据为“CSV”,然后被导出的CSV文件可以被电子表格程序导入。

“CSV”不是一种单一的、定义明确的格式(尽管RFC 4180有一个被广泛使用的定义),因此在实践中,术语“CSV”泛指具有下列特征的任何文件:

  • 纯文本,使用某个字符集,比如ASCII、Unicode、EBCDIC或GB2312(简体中文环境)等;
  • 由记录组成(典型的是每行一条记录);
  • 每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符;有时分隔符可以包括可选的空格);
  • 每条记录都有同样的字段序列。

 

写csv的例程

写csv的例程如下,该代码在c/c++下均可编译:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main ()
  4. {
  5. FILE *fp;
  6. typedef struct tagStuInfo {
  7. int id;
  8. char name[16];
  9. float age;
  10. } StuInfo, *PStuInfo;
  11. StuInfo sis[] = { {1, "tom", 12}, {2, "jack", 12.2}, {3, "siu", 2} };
  12. fp = fopen ("demo.csv", "w");
  13. for (int i = 0; i < sizeof (sis) / sizeof (*sis); i++) {
  14. fprintf (fp, "%d,%s ,%f\n", // \bred{!!!注意 \%s 后有一个空格}
  15. sis[i].id, sis[i].name, sis[i].age);
  16. }
  17. fclose (fp);
  18. return 0;
  19. }

读csv的例程

读csv的例程如下,为了方便将读到的数据进行保存,该代码使用了vector,仅限c++下编译:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <vector>
  4. int main ()
  5. {
  6. FILE *fp;
  7. typedef struct tagStuInfo {
  8. int id;
  9. char name[16];
  10. float age;
  11. } StuInfo, *PStuInfo;
  12. fp = fopen ("d:/demo.csv", "r");
  13. std::vector<StuInfo> vct;
  14. StuInfo si;
  15. int r;
  16. int ic = 0;
  17. while( fscanf (fp, "%d,%s ,%f\n", // \bred{!!!注意 \%s 后有一个空格}
  18. &(si.id),si.name, &(si.age)) != EOF ) {
  19. vct.push_back(si);
  20. }
  21. fclose (fp);
  22. //验证读到的数据是否正确
  23. for( auto s:vct ){
  24. printf("id:%d,name:%s,age:%f\n",s.id,s.name,s.age);
  25. }
  26. return 0;
  27. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/959217
推荐阅读
相关标签
  

闽ICP备14008679号