21xrx.com
2025-04-06 00:22:27 Sunday
文章检索 我的文章 写文章
如何在C++中实现按行读取CSV文件
2023-06-29 04:24:27 深夜i     20     0
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从行中解析出逗号分隔的值,然后将数据存储在一个向量中。

  
  

评论区

请求出错了