現在、コードのこのセクションを C から C++ に移植しようとしています。基本的に、snprintf ステートメントを C++ 実装に置き換えます。
if (len > 0) // If statement for 0 length buf error
{
localTime(tv, &etime2);
// Printing to the supplied buffer in the main program
char timebuf[80]; // Buffer to hold the time stamp
oststream oss(timebuf, sizeof(timebuf));
oss << etime2.et_year << ends;
cout << timebuf << endl;
// snprintf(buf, len, "%02i %s %02i %02i:%02i:%02i:%03i",
// etime2.et_year, month[etime2.et_mon], etime2.et_day, etime2.et_hour,
// etime2.et_min, etime2.et_sec, etime2.et_usec);
オリジナルをコメントアウトしたsnprintf
ので参考までに。cout
、OSS、およびを使用して、その正確な文字列を出力する必要がありoststream
ます。適切なヘッダー、、、および「using namespace std;」を含めましiostream
たstrsteam
。ただし、「make」を使用して実行すると、次のエラーが発生します
g++ -g -Wno-deprecated -c fmttime.cc fmttime.o
fmttime.cc:14:22: error: strsteam.h: No such file or directory
fmttime.cc:15:21: error: iosteam.h: No such file or directory
fmttime.cc: In function 'char* formatTime(timeval*, char*, size_t)':
fmttime.cc:273: error: 'oststream' was not declared in this scope
fmttime.cc:273: error: expected ';' before 'oss'
fmttime.cc:275: error: 'oss' was not declared in this scope
fmttime.cc:275: error: 'ends' was not declared in this scope
fmttime.cc:276: error: 'cout' was not declared in this scope
fmttime.cc:276: error: 'endl' was not declared in this scope
make: *** [fmttime.o] Error 1
これが参考のための私のmakeドキュメントです。
#Variables
PROGRAM = plot
OBJS = plot.o fmttime.o
CXXFLAGS = -g -Wno-deprecated
LIBS = -lm -lcurses
#Rules
all : ${PROGRAM}
${PROGRAM} : ${OBJS}
g++ ${OBJS} ${LIBS} -o ${PROGRAM}
%.o : %.cc
g++ ${CXXFLAGS} -c $< $@
clean:
rm ${OBJS} ${PROGRAM}
だから私はすべてを試してきました.hをヘッダーの後に含めましたが、C++では必要ないことを知っています. なぜそれが私に言っているのか理解できずiostream
、strstream
範囲外です...