我想知道我是否可以得到一些帮助。我正在尝试根据给我们的实验室任务中的要求移植一些代码。基本上我已经用 C 创建了一些程序,现在的部分要求是将 printf 和 snprintf 语句移植到 C++ 中。printf 我想我可以管理,因为使用 cout << "whatever"<< endl 似乎是标准的。问题在于 snprintf,并使用 ostream oss() 替换它。这是我要解决的代码的一个分区。
char* formatTime(
struct timeval* tv, // Pointer to timeval struct
char* buf, // Pointer to char buf
size_t len // size of buffer
)
{
struct ExpandedTime etime2; // Struct object declaration
// Array containing strings for the months
const char* month[] =
{
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul",
"Aug", "Sep", "Oct", "Nov", "Dec"
};
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
ostream 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 语句。我只是测试存储在某种结构中的“年份”参数。但是我不断收到以下错误。
rkim@l3055serv:~/plot$ make
g++ -g -Wno-deprecated -c fmttime.cc fmttime.o
fmttime.cc: In function 'char* formatTime(timeval*, char*, size_t)':
fmttime.cc:273: error: no matching function for call to 'std::basic_ostream<char, std::char_traits<char> >::basic_ostream(char [80], unsigned int)'
/usr/include/c++/4.4/ostream:361: note: candidates are: std::basic_ostream<_CharT, _Traits>::basic_ostream() [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.4/ostream:82: note: std::basic_ostream<_CharT, _Traits>::basic_ostream(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.4/iosfwd:56: note: std::basic_ostream<char, std::char_traits<char> >::basic_ostream(const std::basic_ostream<char, std::char_traits<char> >&)
make: *** [fmttime.o] Error 1
我确保包含 iostream 和 sstream 以及 using namespace std; 但是我仍然收到此错误并且无法解决它。老实说,我们刚刚开始学习 C++,所以部分问题在于 C++ 的整体抽象性。然而,这个使用 osream 和 oss 的代码分区是由我们的实验室讲师提供给我们的,除了他使用错误的标头“strstream 和 oststream”之外,就我对 C++ 的了解而言,这似乎是有道理的......