如何将put_time变为变量

时间:2015-03-11 02:32:19

标签: c++

我有一个功能

transTime() 
{ 
  time_t const now_c = time(NULL); 
  cout << put_time(localtime(&now_c), "%a %d %b %Y - %I:%M:%S%p"); 
} 

我试图将返回的值保存到变量中,以便我可以执行类似

的操作
string myTime = put_time(localtime(&now_c), "%a %d %b %Y - %I:%M:%S%p"); 

我需要为两个不同的插入使用相同的myTime实例。

编辑/更新:

使用stringstream后,

string transTime()
{
   stringstream transTime;
   time_t const now_c = time(NULL);
   transTime << put_time(localtime(&now_c), "%a %d %b %Y - %I:%M:%S%p");
   string myTime = transTime.str();
  //transTime >> myTime;
   return  myTime;
}

当我使用调用函数时,我会单独Tue,而不是完整的日期和时间。 很可能与getline有关,不知道如何实现。 有什么帮助吗?

2 个答案:

答案 0 :(得分:2)

当您使用stringstream捕获localtime()的输出时,您可以使用stringstream存储.str()中存储的字符串。

即,

string myTime = transTime.str();
return myTime;

答案 1 :(得分:1)

首先,您需要使用大多数(如果不是全部)编译器标准库中包含的tm结构,然后您可以将'tm'对象中的数据传递给字符串:

    string transTime() 
    {
        time_t rawtime;
        struct tm * timeContext;

        string temp;
        stringstream textStream;

        time(&rawtime);

        timeContext = localtime(&rawtime);

        textStream << asctime(timeContext);
        temp = textStream.str();

        return temp;    
    }