我需要将string
时间转换为unsigned int
我使用atoi/strtoul/atol
和string 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
答案 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);
应该可以正常使用您的代码。