如何在 C++ 中读取和解析 CSV 文件?

你真的应该使用一个库来解析 C++ 中的 CSV 文件,因为如果你自己阅读文件,你可能会错过很多情况。C++ 的 boost 库提供了一组非常好的工具来读取 CSV 文件。例如,

例子

#include<iostream>

vector<string> parseCSVLine(string line){

   using namespace boost;

   std::vector<std::string> vec;

   // 标记输入字符串

   tokenizer<escaped_list_separator<char> > tk(line, escaped_list_separator<char>

   ('\\', ',', '\"'));

   for (auto i = tk.begin();  i!=tk.end();  ++i)

   vec.push_back(*i);

   return vec;

}

int main() {

   std::string line = "hello,from,here";

   auto words = parseCSVLine(line);

   for(auto it = words.begin(); it != words.end(); it++) {

      std::cout << *it << std::endl;

   }

}

输出

这将给出输出 -

hello

from

here

另一种方法是使用分隔符分割一行并将其放入数组中 -

示例

另一种方法是使用 getline 函数提供自定义分隔符来拆分字符串 -

#include <vector>

#include <string>

#include <sstream>

using namespace std;

int main() {

   std::stringstream str_strm("hello,from,here");

   std::string tmp;

   vector<string> words;

   char delim = ','; // Ddefine 要拆分的分隔符

   while (std::getline(str_strm, tmp, delim)) {

      // 在此处为 tmp 提供适当的检查,如为空

      // 还要去掉诸如 !、.、? 等符号。

      // 最后推一下。

      words.push_back(tmp);

   }

   for(auto it = words.begin(); it != words.end(); it++) {

      std::cout << *it << std::endl;

   }

}

输出结果

这将给出输出 -

hello

from

here

以上是 如何在 C++ 中读取和解析 CSV 文件? 的全部内容, 来源链接: utcz.com/z/357565.html

回到顶部