C 不定引數實現寫CSV檔案

2021-10-19 08:35:42 字數 1965 閱讀 3861

自己實現乙個寫csv的類,方便使用,使用不定引數模板實現。

直接上**,**很簡單,如果不設定csv頭的話,就不校驗每行資料的個數。

如果寫入了頭,那就校驗每一行資料的個數。

標頭檔案

#pragma once

#ifndef csv_writer_include_h_

#define csv_writer_include_h_

#include #include #include #include class bugcheck

;#define my_dynamic_assert(cond, text) \

if (!(cond)) \

bugcheck::assertion(text); \

else \

(void)0

class csvwriter

bool init();

void setprecision(const int pre = 6)

void setisfixed(bool is = true)

}bool writehead(const std::vector&headnames);

template void writelinedata(const arg &arg)

*ofs_ << arg << "\n";

columncount = init_col_count;

}template void writelinedata(const arg1 &arg1, const args &...args)

*ofs_ << arg1 << ",";

writelinedata(args...);

}private:

const std::string filename_;

std::shared_ptrofs_;

int init_col_count = ;

const int no_head_count = ;

int columncount = ;

};#endif

原始檔

#include "csvwriter.h"

void bugcheck::assertion(const char *text)

csvwriter::csvwriter(const std::string &filename)

: filename_(filename)

bool csvwriter::init()

ofs_->precision(6);

*ofs_ << std::fixed;

return true;

}bool csvwriter::writehead(const std::vector&headnames)

init_col_count = static_cast(headnames.size());

columncount = init_col_count;

int end = headnames.size() - 1;

for (int i = 0; i < end; ++i)

*ofs_ << headnames[end] << "\n";

return true;

}

舉個例子

#include #include #include #include #include "csvwriter.h"

int main(int argc, char** ar**) ;

std::srand(time(nullptr));

writer.writehead(headnames);

for (int i = 0; i < 1000; i++)

return 0;

}

不定引數寫檔案

一 vfprintf 函式名 vfprintf 功 能 格式化的資料輸出到指定的資料流中 用 法 int vfprintf file stream,char format,va list param 函式說明 vfprintf 會根據引數format字串來轉換並格式化資料,然後將結果輸出到引數str...

c 不定引數

va list vlist va start vlist,pszformat pszformat 表示 的前乙個引數 va end vlist 其中 typedef char va list define va start crt va start define va arg crt va arg ...

C 不定引數

c 不定引數 下面,我們來看一下,如果在c 的函式中接收數量不定的函式引數。這種形式如同在c 的函式引數列表中使用params 型別的引數。我們可以將函式定義成能夠接受任意數量的實參。通過將省略號 3個句點 寫在函式定義中形參列表的最後,即可表示呼叫該函式時可以提供數量可變的實參。例如 int su...