【发布时间】:2013-11-01 20:46:33
【问题描述】:
为什么ctime() 返回的字符串的最后一个字符是换行符(0x0A)?例如这段代码:
#include <iostream>
#include <cstdlib>
int main(int argc, char* argv[])
{
time_t now;
time(&now);
char* time_str = ctime(&now);
std::cout << time_str << "why is this on a new line?" << std::endl;
return 0;
}
...产生以下输出:
$ ./time.exe
Wed Oct 23 14:52:29 2013
why is this on a new line?
$
这没什么大不了的;我可以从字符串中去掉最后一个字节,但是为什么ctime() 把它放在首位呢?
【问题讨论】:
-
请注意:
0x0A是换行符,而不是回车符。 -
我之前看到过这个问题的辩论,但没有得出任何结论性的推理。这样做绝对没有明确的标准。它似乎就是它的实现方式。
-
@ShafikYaghmour 是的,这正是我所说的。它之所以存在,是因为它存在于以前的标准中,这仍然没有很好地说明它最初存在的原因。
-
感谢您的更正和编辑;显然我工作太努力了,无法记住我的 ASCII。 :-)