21xrx.com
2024-12-22 20:27:39 Sunday
登录
文章检索 我的文章 写文章
C++读取多行3列的csv数据文件并写入二维数组
2023-07-12 06:51:04 深夜i     --     --
C++ csv数据文件 多行3列 二维数组 读取 写入

C++是一种高效的编程语言,常用于数据处理和算法编写。在数据处理中,常常需要读取csv数据文件并对其进行处理。本文将介绍如何使用C++读取多行3列的csv数据文件并将其写入二维数组。

首先,我们需要打开csv文件。假设我们的文件名为data.csv,那么可以使用以下代码打开文件:


#include<fstream>

#include<iostream>

using namespace std;

int main() {

  ifstream infile("data.csv");

  if (!infile)

    cout << "Error opening file.";

    return -1;

  

  while (!infile.eof())

    // Read data

  

  infile.close();

  return 0;

}

在此代码中,我们使用了ifstream来打开文件。如果文件不存在或无法打开,我们会在控制台输出一个错误信息并返回-1表示错误。如果成功打开文件,则使用while循环从文件中读取数据。我们将在循环中读取每一行数据,并将其存储在一个二维数组中。

为了读取数据,我们需要使用getline()函数。getline()函数将读取文件中的一行数据,并将其存储在一个字符串变量中。我们可以使用字符串流(stringstream)来解析字符串并将其存储在数组中。


#include<fstream>

#include<sstream>

#include<iostream>

using namespace std;

int main() {

  ifstream infile("data.csv");

  if (!infile)

    cout << "Error opening file.";

    return -1;

  

  string line;

  double data[100][3];

  int row = 0;

  while (getline(infile, line)) {

    stringstream ss(line);

    string token;

    int col = 0;

    while (getline(ss, token, ',')) {

      data[row][col] = stod(token);

      col++;

    }

    row++;

  }

  infile.close();

  return 0;

}

在此代码中,我们定义了一个二维数组data来存储读取的数据。我们使用getline()函数从文件中读取一行数据,并将其存储在字符串变量line中。然后,我们使用stringstream来解析字符串。我们定义了一个字符串变量token来存储每个逗号分隔符之间的数据。我们使用stod()函数将字符串转换为double类型,并将其存储在data数组的相应位置中。最后,我们在读取每一行数据之后,将行索引row加1。

在这个示例代码中,我们假设csv文件中有不超过100行的数据,每行有3列数据。我们将按照这个格式定义二维数组data,并通过读取csv文件填充它。

最后,我们在处理完数据之后,需要关闭打开的文件。因为文件是一个资源,如果不及时关闭,可能会耗尽系统资源,因此关闭文件是一个非常重要的操作。

综上所述,我们可以使用C++编写代码来读取多行3列的csv数据文件,并将其存储在一个二维数组中。在这个过程中,我们使用了C++中的文件流、字符串流和数组等基本概念。通过这个示例,我们可以更好地理解和掌握C++的文件读取和数组操作技能。

  
  

评论区

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