C ++ 11添加了一些新的字符串转换功能:
http://en.cppreference.com/w/cpp/string/basic_string/stoul
它包括stoi(字符串到int),stol(字符串到long),stoll(字符串到long long),stoul(字符串到unsigned long),stoull(字符串到unsigned long long)。在没有stou(字符串到无符号)的情况下值得注意。是否有某些原因是不需要的,但所有其他原因都是?
6
我的问题旨在更多地遵循“仅使用stoul有一些非显而易见的缺点”的思路。显然,这将与模板实例化混为一谈,但是还有其他我没有考虑的东西吗?关于为什么将其遗漏的评论会很好,但是是次要的。
—
David Stone
@NicolBolas我看不到为什么这没有建设性。这是一个完全正确的问题,因为我看不到这种不一致的任何原因,并且回答者可能会深入了解一些可能存在的有效原因,但不是显而易见的原因。
—
Christian Rau 2012年
@SethCarnegie嗯,您的平台(也许是大多数平台)所做的事情是无关紧要的,因为
—
Christian Rau 2012年
unsigned long
公正是没有的unsigned int
。
@SethCarnegie:在我的典型计算机上,
—
Mike Seymour 2012年
unsigned long
是64位和unsigned int
32 位。它们是不同的类型,不能假定彼此相同。
@NicolBolas就像说的那样,OP(和我)并不知道它是投机的,因为它可能完全有一个正当的理由埋在C ++语言的内部。但是由于您说的是推测性的,所以我想没有这样的原因。但同样,也许负责C ++ 11的人仍然可以回答。这不是“哇哇,那该死
—
Christian Rau 2012年
stou
的问题在哪里”,而是一个问题,要求为这种明显的不一致提供可能的肯定原因。如果您知道没有这种原因,那么请将其发布为答案。