21xrx.com
2024-11-08 22:11:49 Friday
登录
文章检索 我的文章 写文章
C++实现按行读取并将数据存入数组
2023-07-08 05:52:31 深夜i     --     --
C++ 按行读取 数据存入 数组

C++是一门面向对象的编程语言,在数据处理方面有着很强的实用性。在很多场合下,需要从文件中读取数据并将其存入数组中,这时就需要用到C++的文件输入输出技术以及数组处理技术。

在C++中,可以使用fstream和ifstream类进行文件读取操作,同时可以使用数组来存储读取的数据。下面是一个示例程序,展示了如何按行读取文件并将数据存入数组中:


#include <iostream>

#include <fstream>

using namespace std;

int main() {

  ifstream infile("data.txt"); // 打开文件

  if (!infile) // 文件打开失败

    cout << "Failed to open file." << endl;

    return 1;

  

  const int MAX_ROWS = 10;

  const int MAX_COLS = 3;

  double data[MAX_ROWS][MAX_COLS]; // 定义数组

  int row = 0;

  while (!infile.eof() && row < MAX_ROWS) { // 不断读取文件并保存数据

    infile >> data[row][0] >> data[row][1] >> data[row][2];

    row++;

  }

  infile.close(); // 关闭文件

  // 输出数组中的数据

  for (int i = 0; i < row; i++) {

    for (int j = 0; j < MAX_COLS; j++) {

      cout << data[i][j] << " ";

    }

    cout << endl;

  }

  return 0;

}

在这个程序中,首先使用ifstream类打开data.txt文件,如果文件打开失败,则输出提示,并结束程序。然后定义了一个二维数组double data[MAX_ROWS][MAX_COLS]来存储读取的数据,其中MAX_ROWS和MAX_COLS分别表示数据的最大行数和最大列数。在while循环中,利用了C++的语言特性,每次都会自动读取一行的数据,并存储到数组data中。最后,使用for循环遍历数组,输出数组中的数据。

如果你要读取的文件是csv格式的,则可以利用getline函数按行读取文件,并使用逗号分隔符将每行数据分隔开来,然后存储到数组中。具体实现类似于以下示例程序:


#include <iostream>

#include <fstream>

#include <sstream>

using namespace std;

int main() {

  ifstream infile("data.csv");

  if (!infile)

    cout << "Failed to open file." << endl;

    return 1;

  

  const int MAX_ROWS = 10;

  const int MAX_COLS = 3;

  double data[MAX_ROWS][MAX_COLS];

  int row = 0;

  while (!infile.eof() && row < MAX_ROWS) {

    string line;

    getline(infile, line);

    istringstream iss(line); // 使用istringstream来分隔字符串

    string token;

    int col = 0;

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

      if (col < MAX_COLS) {

        data[row][col] = stod(token); // 将字符串转为double类型

        col++;

      }

    }

    row++;

  }

  infile.close();

  for (int i = 0; i < row; i++) {

    for (int j = 0; j < MAX_COLS; j++) {

      cout << data[i][j] << " ";

    }

    cout << endl;

  }

  return 0;

}

在这个示例程序中,使用了getline函数按行读取文件,并将每行数据存储到字符串line中。然后使用istringstream类将line字符串按逗号分隔为多个子串。接下来就可以将这些子串转为double类型,并存储到数组中了。最后,同样使用for循环遍历数组,输出数组中的数据。

总之,在C++中按行读取文件并将数据存入数组有多种实现方式,可以根据自己的需求和实际情况选择最合适的方式。

  
  

评论区

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