如何在c ++中将字符串时间转换为unsigned int

时间:2015-06-10 08:38:29

标签: c++

我需要将string时间转换为unsigned int我使用atoi/strtoul/atolstring stream来测试我的程序但是他们不能正常工作我错过了什么? ?

 string CurrentTime(){
        time_t rawtime;
        struct tm * timeinfo;
        char bffr [80];

        time (&rawtime);
        timeinfo = localtime (&rawtime);

        strftime (bffr,80,"%T",timeinfo);
        // puts (bffr);

        return bffr;
    }

    int main(){
    string new_time;
    new_time = CurrentTime();
    stringstream strValue;
        strValue << new_time;
    unsigned int stime;
        strValue >> stime;
    cout<<stime<<endl;
    cout<<new_time<<endl;
    }

 int main(){
        string new_time;
        new_time = CurrentTime();
unsigned int stime =atoi(new_time.c_str());
cout<<stime<<endl;
cout<<new_time<<endl;

但是它们都打印stime:只有一小时,例如10

并打印new_time:例如10:20:15

2 个答案:

答案 0 :(得分:1)

由于分隔符&#34;:&#34;您的字符串流无法正常工作。你需要绕过它。请尝试以下代码:

string new_time;
new_time = CurrentTime();
std::string finalstring;
std::string delim = ":";
size_t pos = 0;
while ((pos = new_time.find(delim)) != std::string::npos)
{
    finalstring += new_time.substr(0, pos);
    new_time.erase(0, pos + delim.length());
}

stringstream strValue;
strValue << finalstring;
strValue << new_time;
unsigned int stime;
strValue >> stime;
cout << stime << endl;

答案 1 :(得分:-1)

似乎%T在for item in Item_DF[key]['Plots']: imgdata= BytesIO() ploter = DF.plot(x=item[0], y=item[1]) fig = ploter.get_figure() fig.savefig(imgdata, format="png") imgdata.seek(0) worksheet.insert_image(row_num, col_num, "",{'image_data': imgdata}) row_num+=10 函数调用中效果不佳。

但是有一个解决方法。 strftime实际上是%T

因此,

  

strftime(bffr,80,“%H:%M:%S”,timeinfo);

应该可以正常使用您的代码。