etrobocon2019 feat.KatLab  ece30a9a007fff7d3ad48592c0d09a74643377bb
Logger.cpp
[詳解]
1 
6 #include "Logger.h"
7 
8 LogFile::TemporaryObject::TemporaryObject(FILE* fp_) : fp(fp_), isHead(true) {}
9 
11 {
12  std::fputc('\n', fp);
13 }
14 
16 {
17  // ファイルの先頭のときは、デリミタ―を挿入しない
18  if(isHead) {
19  isHead = false;
20  return;
21  }
22  // コンマを挿入する
23  std::fputc(',', fp);
24 }
25 
26 Logger::Logger(const char* fileName, const char* mode)
27 {
28  fp = fopen(fileName, mode);
29  assert(fp != nullptr);
30 }
31 
33 {
34  fclose(fp);
35 }
36 
37 void Logger::write(const char* format, ...)
38 {
39  // 可変長引数の展開
40  va_list args;
41  va_start(args, format);
42 
43  // ファイル出力
44  std::vfprintf(fp, format, args);
45 
46  va_end(args);
47 }
~Logger()
ファイルポインターを解放するデストラクター
Definition: Logger.cpp:32
Logger(const char *fileName="log.csv", const char *mode="w")
ファイルポインターを確保するコンストラクター
Definition: Logger.cpp:26
TemporaryObject(FILE *fp_)
Definition: Logger.cpp:8
~TemporaryObject()
行末に改行を挿入する
Definition: Logger.cpp:10
 ユーザーが与えたデータをcsv形式で記録するクラス 記録するためには、「write」または「<<演算子」機能...
void putDelimiter()
データの先頭にデリミタ―を挿入する
Definition: Logger.cpp:15
void write(const char *format,...)
指定したデータを出力ファイルに書き込む Usage: foo.write("%d,%f,%s\n", x, y, z);
Definition: Logger.cpp:37