如何有效地将数字字符串值分配给整数? [复制]

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 - 如何正确地将字符串解析为浮点数(价格数字格式:整数、小数或两者兼有)

如何一次读取一个字符的字符串或文件并将该字符的 ASCII 值分配给 CMD 批处理中的变量? [复制]

如何将字符串传递给函数并返回整数?

如何有效地将 BSTR 复制到 wchar_t[]?

有效地将切片插入另一个切片

在Java中提取int的数字