C 讀寫CSV檔案

2021-09-08 16:49:56 字數 2102 閱讀 8154

前兩天看了《

reading and writing csv files in mfc

》(發現它只針對檔案中的一行讀寫,而且只能作為乙個區域性變數使用,或者讀,或者寫,不能同時兼用,更不能作為類的變數,更別說擴充套件了。而且,它只支援在mfc條件下實現,如果我們需要在乙個模組當中呢?在乙個庫中呢?在非mfc中呢?不過,它的讀取遍歷演算法和寫入演算法我覺得還是不錯的,所以,基於此,也根據我自己工作中的需求做了改變,也在測試中達到了比較好的結果。

一般讀取csv檔案我們是需要:

1、既能滿足mfc,又能滿足非mfc;

2、逐行讀取,而不是一行,因為可能不止一行;

3、讀取一行後需要針對分隔符(一般是「,」)來分析獲得所有解析後的元素項,而且每一行的元素個數都不一定相同;

4、寫入csv時,針對每一行的元素之間都要新增分隔符(一般是「,」),甚至元素當中可能有諸如:冒號(「"」)、逗號(「,」)這樣比較特殊的字元,我們又如何解決呢?

5、作為乙個封裝類,留有餘地便於今後的完善和擴充套件。

好了,不多說了,上**:

xcfilestream.h

#if _msc_ver > 1000

#pragma once

#endif

#ifndef __xcfilestream_h__

#define __xcfilestream_h__

/// 隱藏依賴檔案

/// c系統檔案

/// c++系統檔案

#include

#include

#include

using namespace std;

#include

/// 其它庫標頭檔案

/// 本專案標頭檔案

/// 無錯

#define xc_err_none 0

/// 無效檔名或非指定檔案格式

#define xc_err_invalid_file_name (-1)

/// xun-test檔案的讀與寫

class cxcfilestream 

;#endif

xcfilestream.cpp

/// 隱藏依賴檔案

/// c系統檔案

/// c++系統檔案

#include /// 讀取對映檔案

#include

/// 其它庫標頭檔案

/// 本專案標頭檔案

#include "xcfilestream.h"

cxcfilestream::cxcfilestream()

cxcfilestream::~cxcfilestream(void)

const bool cxcfilestream::iscsvfile(lpctstr lpszfilename)

const int cxcfilestream::readcsvdata(lpctstr lpszfilename, vector> &vlstr)

}/// add this character to value

_strelem.push_back(*_pcsrc++);}}

else

/// add this string to container

_ltstr.push_back(_strelem);

}/// 分析後的一行檔案內容所得的元素列表新增到容器中

vlstr.push_back(_ltstr);

/// 歸零,防止下次分析舊的資料。

_strin.assign("");

}return xc_err_none;

}const int cxcfilestream::writecsvdata(lpctstr lpszfilename, const vector> &vlstr)

}else 

_streamtofile << *lit;

_streamtofile.put(chquote);

}else

_streamtofile << *lit;

}/// 換行

_streamtofile << endl;

}/// 

return xc_err_none;

}

C 讀寫CSV檔案

csv是一種通用的 相對簡單的檔案格式,最廣泛的應用是在程式之間轉移 資料,而這些程式本身是在不相容的格式上進行操作的。那麼,c 如何讀取和寫入csv格式檔案呢?csv資料格式並沒有非常統一的標準 但是為了避免出錯 我們在開發的時候統一格式是這樣的 csv檔案預設以英文逗號做為列分隔符,換行符作為行...

C 讀寫csv檔案

資料庫表資料 本地csv檔案 資料庫表資料,需要對csv檔案進行讀寫操作,支援中文路徑 include include csvfile.h using namespace std intmain std string strline datafile.makeline veccells,strlin...

CSV檔案讀寫

delimiter 分隔符 quotechar 如果某個item中包含了分隔符,用quotechar包裹 doublequote quotechar double 一下用來做區分 escapechar 如果不用 doublequote 的方法還可以用 escapechar 來輔助 linetermi...