我有变长。例子:
long date = 20010203;
我需要通过 cout 以这种格式 2001-02-03 打印值。示例:
cout << "Today is " << "2001-02-03" << endl;
我需要将值 long 20010203 转换为带有“-”的字符串格式以进行打印。怎么做?我只能使用这些库:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
我有变长。例子:
long date = 20010203;
我需要通过 cout 以这种格式 2001-02-03 打印值。示例:
cout << "Today is " << "2001-02-03" << endl;
我需要将值 long 20010203 转换为带有“-”的字符串格式以进行打印。怎么做?我只能使用这些库:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
最基本的方法是:
long year = date / 10000;
long month = (date - (year * 10000)) / 100;
long day = (date - (year * 10000) - (month * 100));
std::cout << "Today is " << year << "-" << (month < 10 ? "0" : "") << month << "-" << (day < 10 ? "0" : "") << day << std::endl;;
幼稚的方法,划分和截断
20010203 / 10000000 = 2,现在你有了第一个数字。
从 20010203 中减去 (10000000 * 2) 得到 0010203
冲洗并重复,直到您拥有所有必要的数字。
编辑,我是哑巴
你可以这样做:
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
int main ()
{
long date=20010203;
char arr[9];
sprintf(arr, "%ld", date);//converts long to string
std::cout << "Today is ";
for(int i=0; i<9; i++)
{
if(i==4 || i==6) std::cout << '-';
std::cout << arr[i];
}
return 0;
}