21xrx.com
2024-12-23 00:40:17 Monday
登录
文章检索 我的文章 写文章
用C++读取CSV文件
2023-07-01 10:25:08 深夜i     --     --
C++ 读取 CSV文件 文件处理 数据库

CSV(Comma Separated Values)是一种常见的文件格式,它是一种将数据存储为逗号分隔的文本文件,适用于许多编程领域。借助C++编程语言,我们可以轻松地读取CSV文件,继而操作其中的数据。

在C++中,使用标准库中的文件操作函数可以读取CSV文件。首先,我们需要打开目标CSV文件,通过文件流(fstream)类型调用open()函数即可打开。如下:


#include <iostream>

#include <fstream>

using namespace std;

int main(){

  fstream inputFile;

  inputFile.open("file.csv", ios::in);

  if(inputFile)

    cout<<"File opened successfully!";

    //code to read CSV file content goes here..

  

  else

    cout<<"File opening failed!";

  

  inputFile.close();

  return 0;

}

上面的代码中,通过fstream类型创建了一个文件流对象inputFile,并使用open()函数打开了名为file.csv的文件。在参数中使用了“ios::in”标志,因为我们只想读取文件内容而不是写入内容。如果成功打开文件,则打印“File opened successfully!”消息,否则打印“File opening failed!”信息。

接下来是读取CSV文件中的内容。首先,我们需要使用getline()函数读取CSV文件中的每一行数据。它是一个可以从文件流中读取行输入的函数。读取数据后,我们需要使用逗号分隔符(,)将数据分开。将每行数据分解成逗号分隔的值,并存储在向量(vector)中。如下:


#include <iostream>

#include <fstream>

#include <vector>

using namespace std;

int main(){

  fstream inputFile;

  inputFile.open("file.csv", ios::in);

  if(inputFile){

    cout<<"File opened successfully!"<<endl;

    string line, word;

    vector<string> row;

    while(getline(inputFile, line)){

      row.clear();

      stringstream ss(line);

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

        row.push_back(word);

      }

      //Do your work of processing the row here

    }

  }

  else

    cout<<"File opening failed!";

  

  inputFile.close();

  return 0;

}

在上面的代码中,我们定义了两个新的字符串变量line和word,它们将用于迭代读取CSV文件的每一行和每一列数据。我们还定义了一个向量row,用于存储每行数据中的逗号分隔的值。

在while循环中,使用getline()函数每次遍历输入文件的一行,将所读取的行数据存储在字符串变量line中。使用stringstream对象ss初始化line并将其中的内容分解成word。然后,使用while循环将每个单词分解并逐个存储到row向量中。接下来,你可以在里面使用row向量进行任何所需的操作,如打印值或将值存储在数据库中。

最后,在代码末尾,使用close()函数关闭CSV文件。

通过以上的步骤,我们成功地读取了CSV文件并将其转换为C++程序中的可操作数据。我们可以根据需求对 程序进行更多的改进,例如:处理文件中的多个列和行,将读取的数据转换为数值,或将文件中的数据写入各种统计信息中等等。总之,在C++中使用CSV格式进行数据处理是相当有效和简单的。

  
  

评论区

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