21xrx.com
2024-12-22 23:38:00 Sunday
登录
文章检索 我的文章 写文章
如何在C++中实现按行读取CSV文件
2023-06-29 04:24:27 深夜i     --     --
C++ CSV 文件 按行读取 文件输入流 getline函数

CSV文件是一种常用的数据交换格式,其中数据以逗号分隔,并且通常按行存储。在C++中,我们可以使用标准库中的输入输出流来读取和写入CSV文件。

下面介绍一种按行读取CSV文件的方法:

首先,我们需要包含iostream和fstream头文件,以便使用文件输入输出流。


#include <iostream>

#include <fstream>

接下来,我们可以定义一个读取CSV文件的函数,该函数将按行读取文件并将每行的数据存储在一个vector中。


void read_csv(std::vector<std::vector<std::string>>& data, const std::string& filename)

{

 std::ifstream file(filename);

 if (file.is_open())

 {

  std::string line;

  while (std::getline(file, line))

  {

   std::vector<std::string> vec;

   std::istringstream ss(line);

   std::string value;

   while (std::getline(ss, value, ','))

   {

    vec.push_back(value);

   }

   data.push_back(vec);

  }

 }

 else

 

  std::cerr << "Could not open file: " << filename << std::endl;

 

}

该函数使用ifstream打开给定文件,并检查文件是否成功打开。如果打开成功,则按行读取文件。对于每一行,我们可以定义一个vector来存储该行的数据,并使用istringstream从该行中解析出每个逗号分隔的值。值将存储在一个vector中,并将其添加到数据向量中。

当文件无法打开时,函数将输出错误信息。

我们可以将该函数用于读取一个名为example.csv的文件。


int main()

{

 std::vector<std::vector<std::string>> data;

 read_csv(data, "example.csv");

 // Print the data to the console

 for (auto& row : data)

 {

  for (auto& col : row)

  {

   std::cout << col << "\t";

  }

  std::cout << std::endl;

 }

 return 0;

}

在main函数中,我们调用该函数来读取一个名为example.csv的文件,并将结果存储在一个二维字符串向量中。然后,我们可以使用循环将数据打印到控制台。

按行读取CSV文件是一个常见的问题,并且可以通过使用C++的标准库中的输入输出流轻松解决。我们可以使用getline函数来读取文件的每一行,并使用istringstream从行中解析出逗号分隔的值,然后将数据存储在一个向量中。

  
  

评论区

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