strftime将不需要的字符添加到我想要显示的内容中

时间:2015-04-01 12:42:57

标签: c++ strftime

嘿伙计们,我想知道是否有人可以向我指出这一点。我目前正在尝试显示日期&时间在cmd提示符的右上角,但我得到的是其他字符然后我要求的内容。这就是我到目前为止所拥有的

time_t rawtime;
struct tm * timeinfo;
char buffer[80];

time(&rawtime);
timeinfo = localtime(&rawtime);

// this displays "23                    Date:etcetcetc"
cout << "\n\n\n\n\n\n\n\n\n\n\n\n";
cout << strftime(buffer, 80, "\t\t\t\t\t\t\tDate: %d/%m/%Y", timeinfo);
puts(buffer);
// and this displays "16Time:etcetcetc"
cout << "\t\t\t\t\t\t\t";
cout << strftime(buffer, 80,"Time: %I:%M:%S \n", timeinfo);;
puts(buffer);

如果你能看到它给我的评论,但第一行增加了23而另一行增加了16,我做错了什么?

亲切的问候!

JB

2 个答案:

答案 0 :(得分:1)

cout << strftime(buffer, 80, "\t\t\t\t\t\t\tDate: %d/%m/%Y", timeinfo);

cout << strftime(buffer, 80,"Time: %I:%M:%S \n", timeinfo);

您正在将函数strftime的结果发送到stdout(它是打印到缓冲区的字节数)。

puts(buffer);实际上输出了你的缓冲区。

答案 1 :(得分:1)

尝试替换此:

cout << strftime(buffer, 80, "\t\t\t\t\t\t\tDate: %d/%m/%Y", timeinfo);

用这个:

strftime(buffer, 80, "\t\t\t\t\t\t\tDate: %d/%m/%Y", timeinfo);