21xrx.com
2024-11-22 06:23:42 Friday
登录
文章检索 我的文章 写文章
C++如何读取CSV文件
2023-07-05 11:37:16 深夜i     --     --
C++ 读取 CSV文件 文件操作 数据处理

CSV文件是一种常见的数据格式,以逗号作为字段的分隔符,以换行符作为记录的分隔符。在数据处理中,经常需要读取CSV文件并对其中的数据进行操作。在本文中,将介绍C++如何读取CSV文件。

首先,需要使用C++中的fstream库打开CSV文件。可以使用以下代码打开文件:


#include<fstream>

using namespace std;

int main(){

  ifstream file("sample.csv"); //打开sample.csv文件

  return 0;

}

接下来,需要使用getline()函数逐行读取CSV文件中的内容。在CSV文件中,每一行对应一条记录,因此使用getline()函数可以将每一行读取到一个字符串中。以下是一个例子:


#include<fstream>

#include<iostream>

using namespace std;

int main(){

  ifstream file("sample.csv"); //打开sample.csv文件

  string line;

  while(getline(file, line))  //逐行读取文件内容

    cout<<line<<endl;   //打印当前行内容

  

  return 0;

}

使用以上代码可以逐行读取CSV文件中的内容并打印到控制台上。但是,在读取CSV文件时,需要注意字段的分隔符和记录的分隔符。在默认情况下,C++中的getline()函数只能以换行符作为记录的分隔符,如果要使用逗号作为字段的分隔符,则需要使用第三个参数指定分隔符。以下是一个以逗号作为字段分隔符的示例:


#include<fstream>

#include<iostream>

#include<string>

#include<vector>

using namespace std;

int main(){

  ifstream file("sample.csv"); //打开sample.csv文件

  vector<vector<string>> data;  //定义二维字符串数组保存数据

  string line;

  while(getline(file, line)){  //逐行读取文件内容

    vector<string> row;    //定义一个字符串数组,保存当前行的数据

    string field;       //定义一个字符串保存当前字段的值

    for(char c : line){    //遍历当前行的字符

      if(c == ','){     //如果当前字符是逗号,表示一个字段结束

        row.push_back(field); //将当前字段的值保存到当前行的数组中

        field = "";    //重置当前字段的值

      }

      else{

        field += c;    //将当前字符加入当前字段中

      }

    }

    row.push_back(field);  //将最后一个字段的值保存到当前行的数组中

    data.push_back(row);   //将当前行的数组保存到数据中

  }

  //打印读取的数据

  for(auto row : data){

    for(auto field : row){

      cout<<field<<"\t";  //以制表符隔开每个字段

    }

    cout<<endl;       //每行数据输出后换行

  }

  return 0;

}

以上代码通过逐个字符读取每一行的内容,并以逗号分隔每个字段。最终,将每个字段保存到一个二维数组中,并输出到控制台。

总之,C++可以使用fstream库读取CSV文件,通过getline()函数逐行读取文件内容;要以逗号作为字段分隔符,可以使用第三个参数指定分隔符,然后逐个字符读取每一行的内容。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复