如何有效地将数字字符串值分配给整数? [复制]
Posted
技术标签:
【中文标题】如何有效地将数字字符串值分配给整数? [复制]【英文标题】:How to effectively assign numerical string values to integers? [duplicate] 【发布时间】:2014-01-09 08:30:12 【问题描述】:我有一个包含 HH:MM:SS(':' 是字符串的一部分。) 格式的时间值的字符串。我必须将时间转换为秒并将该值赋给一个整数变量。我我不知道有什么功能可以帮助我做到这一点。
【问题讨论】:
查看此链接 ***.com/questions/4137748/… 和 cplusplus.com/reference/ctime/strftime ***.com/questions/11213326/… 这回答了你的问题 【参考方案1】:使用 sscanf_s。 例如:
void ScanTime(char* strTime)
int hours;
int minutes;
int seconds;
sscanf_s(strTime, "%d:%d:%d", &hours, &minutes, &seconds);
printf("hours: %d\nminutes:%d\nseconds:%d\n", hours, minutes, seconds);
int _tmain(int argc, _TCHAR* argv[])
ScanTime("13:57:44");
return 0;
【讨论】:
没错,但真正的问题是如何获得总秒数... 这很简单:int totalSeconds = seconds + minutes*60 + hours*3600;
【参考方案2】:
由于这不是标准的 C++ 函数,它很大程度上取决于您使用的框架或库。
这是在 Borland C++ Builder 中的完成方式:
String Time;
Time = "12:34:56";
TDateTime DT;
try
DT = StrToTime(Time);
catch(...)String M = "Error converting time string: "+Time; Application->MessageBox(M.c_str(),"ERROR",MB_OK );
【讨论】:
【参考方案3】:使用strtol。 例如::
int a=(int)strtol(numeric_string.c_str(),(char **)NULL,10);
如果您的意图是简单地转换 HH:MM:SS,则需要编写一个函数 算法是这样的(假设 24Hr 格式):
split
字符串使用“:”
使用strtol
将每个部分转换为整数。
last part+(60* middle part)+(60*60*firstpart)
会给你
实际价值
【讨论】:
“例如”是什么意思?以上是关于如何有效地将数字字符串值分配给整数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Android - 如何正确地将字符串解析为浮点数(价格数字格式:整数、小数或两者兼有)