从asctime()删除换行符

Ray*_*xes 4 c++ newline

我想摆脱那条asctime()给我时间的新路线

string str;
time_t tt;
struct tm * ti;
time(&tt);
ti = localtime(&tt);
str = asctime(ti);
for (int i = 0; i < 2; i++)
    cout << str;
Run Code Online (Sandbox Code Playgroud)

输出是

fri apr 26 00:59:07 2019
fri apr 26 00:59:07 2019
Run Code Online (Sandbox Code Playgroud)

但我想要这种形式

fri apr 26 00:59:07 2019fri apr 26 00:59:07 2019
Run Code Online (Sandbox Code Playgroud)

Ker*_*g73 7

由于换行符是最后一个字符,因此您要做的就是删除字符串中的最后一个字符。您可以通过致电pop_back

str.pop_back();
Run Code Online (Sandbox Code Playgroud)

在Windows上,换行符是\r\n BUT, \n是C和C ++的平台独立换行符。这意味着当您\n以文本模式写入stdout时,字符将转换为\r\n。您可以\n随处使用,并且您的代码将跨平台。

  • 我认为Windows应该只将\ n作为其官方的C ++行终止符(文件在读写时会相互转换,以保持内部一致性)。 (2认同)