如何将格式长值20010203转换为字符串2001-02-03?

时间:2013-04-13 16:12:00

标签: c++ string date type-conversion

我变长了。例如:

long date = 20010203;

我需要以这种格式打印cout值2001-02-03。例如:

cout << "Today is " << "2001-02-03" << endl;

我需要将值long 20010203转换为带有“ - ”的字符串格式进行打印。怎么做? 我只能使用这些库:

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>

3 个答案:

答案 0 :(得分:2)

最基本的方式是:

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

答案 1 :(得分:0)

朴素的方法,划分和截断

20010203/10000000 = 2,现在你有第一个数字。

从20010203减去(10000000 * 2)得到0010203

冲洗并重复直至找到所有必要的数字。

编辑,我是愚蠢的

答案 2 :(得分:0)

您可以这样做:

#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;
}