【发布时间】:2012-01-03 16:21:31
【问题描述】:
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(字符串转无符号)函数。是否有某些原因不需要它但所有其他的都需要?
【问题讨论】:
-
我的问题更接近于“仅使用 stoul 是否存在一些不明显的缺点”。显然这会与模板实例化混淆,但还有什么我没有考虑的吗?评论为什么它被遗漏会很好但次要。
-
@NicolBolas 我不明白为什么这不是建设性的。这是一个完全有效的问题,因为我看不出这种不一致的任何原因,并且答案可能会深入了解一些可能存在的有效但不是那么明显的原因。
-
@SethCarnegie 好吧,您的平台(也许是大多数平台)所做的只是无关紧要的,因为
unsigned long只是没有unsigned int。 -
@SethCarnegie:在我的典型计算机上,
unsigned long是 64 位,unsigned int是 32。它们是不同的类型,不能假定彼此相同。跨度> -
@NicolBolas 就像说的那样,OP(和我)不知道它是推测性的,因为它可能有一个完美的正当理由深埋在 C++ 的语言内部。但既然你说这是投机,我想没有这样的理由。但同样,也许一个负责 C++11 的人仍然可以回答它。这不是“哇哇,那个该死的
stou”问题,而是一个问题,询问这个明显不一致的可能明确的原因。如果您知道没有这样的原因,那么好吧,将其发布为答案。