21xrx.com
2025-01-12 13:23:39 Sunday
文章检索 我的文章 写文章
C++如何读取CSV文件
2023-07-05 11:37:16 深夜i     27     0
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()函数逐行读取文件内容;要以逗号作为字段分隔符,可以使用第三个参数指定分隔符,然后逐个字符读取每一行的内容。

  
  

评论区