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

strftime adds unwanted characters to what I'm trying to display

大家好,我想知道是否有人可以向我指出这一点。我目前正在尝试在 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

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 的结果发送到标准输出(这是它打印到缓冲区的字节数)。

并且puts(buffer);实际输出你的缓冲区。

尝试替换为:

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);