21xrx.com
2025-01-12 12:34:44 Sunday
文章检索 我的文章 写文章
C++实现按行读取并将数据存入数组
2023-07-08 05:52:31 深夜i     10     0
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++中按行读取文件并将数据存入数组有多种实现方式,可以根据自己的需求和实际情况选择最合适的方式。

  
  

评论区