c++读csv
来源:互联网 发布:澳洲上市公司数据查询 编辑:程序博客网 时间:2024/06/14 08:25
csvparser.h
csv文件
#ifndef __CSVPARSE_H_2001_06_07__#define __CSVPARSE_H_2001_06_07__#include <string>using namespace std;class CSVParser { private: string m_sData; string::size_type m_nPos; void SkipSpaces(void); public: CSVParser(); const CSVParser & operator << (const string &sIn); const CSVParser & operator << (const char *sIn); CSVParser & operator >> (int &nOut); CSVParser & operator >> (double &nOut); CSVParser & operator >> (string &sOut);};#endif
csvparser.cpp
#pragma once#include "stdafx.h"#include <iostream>#include <cstdlib>#include "csvparser.h"using namespace std;CSVParser::CSVParser(){ m_sData = ""; m_nPos = 0;}void CSVParser::SkipSpaces(void){ while (m_nPos < m_sData.length() && m_sData[m_nPos] == ' ') m_nPos++;}const CSVParser & CSVParser::operator <<(const string & sIn){ this->m_sData = sIn; this->m_nPos = 0; return *this;}const CSVParser & CSVParser::operator <<(const char *sIn){ this->m_sData = sIn; this->m_nPos = 0; return *this;}CSVParser & CSVParser::operator >>(int & nOut){ string sTmp = ""; SkipSpaces(); while (m_nPos < m_sData.length() && m_sData[m_nPos] != ',') sTmp += m_sData[m_nPos++]; m_nPos++; // skip past comma nOut = atoi(sTmp.c_str()); return *this;}CSVParser & CSVParser::operator >>(double & nOut){ string sTmp = ""; SkipSpaces(); while (m_nPos < m_sData.length() && m_sData[m_nPos] != ',') sTmp += m_sData[m_nPos++]; m_nPos++; // skip past comma nOut = atof(sTmp.c_str()); return *this;}CSVParser & CSVParser::operator >>(string & sOut){ bool bQuotes = false; sOut = ""; SkipSpaces(); // Jump past first " if necessary if (m_nPos < m_sData.length() && m_sData[m_nPos] == '"') { bQuotes = true; m_nPos++; } while (m_nPos < m_sData.length()) { if (!bQuotes && m_sData[m_nPos] == ',') break; if (bQuotes && m_sData[m_nPos] == '"') { if (m_nPos + 1 >= m_sData.length() - 1) break; if (m_sData[m_nPos+1] == ',') break; } sOut += m_sData[m_nPos++]; } // Jump past last " if necessary if (bQuotes && m_nPos < m_sData.length() && m_sData[m_nPos] == '"') m_nPos++; // Jump past , if necessary if (m_nPos < m_sData.length() && m_sData[m_nPos] == ',') m_nPos++; return *this;}
// csv_test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <fstream>#include <string>#include "csvparser.h"using namespace std;int main(void){ifstream infile("sample.csv");string sLine;string sCol1, sCol3, sCol4;double fCol2;int iCol5, iCol6;CSVParser parser;while (!infile.eof()) {getline(infile, sLine); // Get a lineif (sLine == "")continue;parser << sLine; // Feed the line to the parser// Now extract the columns from the lineparser >> sCol1 >> fCol2 >> sCol3;parser >> sCol4 >> iCol5;parser >> iCol6;cout << "Column1: " << sCol1 << endl<< "Column2: " << fCol2 << endl<< "Column3: " << sCol3 << endl<< "Column4: " << sCol4 << endl<< "Column5: " << iCol5 << endl<< "Column6: " << iCol6 << endl<< endl;}infile.close();system("pause");return 0;}
csv文件
sample.csv
0 0
- C语言读CSV文件问题
- c语言写csv
- 【c++】csv文件读写
- 【C++】读写CSV文件
- 【C#】CSV文件读写
- 读取csv文件(C#,C++)
- C语言解析CSV文件!
- C#Export data to CSV
- C# Datatable导出CSV算法
- C语言读取CSV文件
- C语言解析csv文件
- C/C++读写csv文件
- C/C++读写csv文件
- C语言读取csv文件
- C语言读写CSV表格
- C#:读取csv文件,保存为csv文件
- 读csv,写入数据库
- vb.net读csv
- Apache CXF 2.7学习
- 第一个python程序
- 安卓中对SQLite数据库的增删改查
- ByteArrayInputStream源码分析
- TCP网络状态变换时序图
- c++读csv
- tomcat 启用Gzip 压缩进行优化
- Eclipse快捷键 10个最有用的快捷键
- 每个程序员都必须遵守的编程原则
- <!DOCTYPE> 标签的深度剖析以及使用选择
- EditURL与NavigateURL
- Cadence 信号完整性(二)-- 电源完整性理论基础1
- PMP备考
- 敏捷开发一千零一问系列之三十八:计划扑克就是打不出个结果怎么办?