我正在用C ++编写程序的记录器。

我有这段代码:

void Log::Write(char* logline)
{
    time_t rawtime;
    struct tm * timeinfo;
    time ( &rawtime );
    timeinfo = localtime ( &rawtime );
    m_stream << asctime (timeinfo) << logline << endl;
}


这是一条日志

2011年10月11日星期二13:07:28

我想要这样的单行输出不同:
2011年10月11日星期二13:07:28-这是日志

我该怎么做?
谢谢!

最佳答案

您的问题是asctime():

http://www.cplusplus.com/reference/clibrary/ctime/asctime/

The string is followed by a new-line character ('\n') and the terminating null-character.


由于返回的字符串是C字符串,因此可以将\ n替换为\ 0:

char * str = asctime(timeinfo);
str[strlen(str) - 1] = '\0';


只要您不再次调用ctime或asctime,内容就不会被覆盖。

10-08 11:48