【发布时间】:2012-12-03 17:11:11
【问题描述】:
我到处找,找不到这个特定问题的答案:(
我有一个字符串日期,其中包含删除了所有特殊字符的日期。 (即:yyyymmddhhmm 或 201212031204)。
我正在尝试将此字符串转换为 int 以便以后对其进行排序。我尝试了atoi,没有工作,因为该功能的价值太高了。我尝试了流,但它总是返回 -858993460,我怀疑这是因为字符串太大了。我尝试了 atol 和 atoll,但他们仍然没有给出正确的答案。
我宁愿不使用 boost,因为这是作业,我不认为我会被允许。
我没有将大字符串转换为 int 的选项吗? 谢谢!
我想做的事:
int dateToInt(string date)
{
date = date.substr(6,4) + date.substr(3,2) + date.substr(0,2) + date.substr(11,2) + date.substr(14,2);
int d;
d = atoi(date.c_str());
return d;
}
【问题讨论】:
-
如果您只需要对它们进行排序,请将它们排序为字符串。
-
为什么不在日期/时间结构中返回呢?没有办法在 int 中存储这么多数字,因此需要一些更大的数据类型;使用与系统时间函数相同的形式似乎是合适的 (
date_tiirc) -
您有任何可用的 64 位变量数据类型吗?您得到的数字超过 2010 亿,这对于 32 位整数来说太大了。无符号 32 位整数的最大值为 4,294,967,295。
-
@peachykeen,你是对的,使用日期/时间结构似乎更有意义。我只是对如何在之后对这些结构进行排序有点困惑..