atoi、atol和stoi分别代表什么?

17

我了解这些函数的作用,但我无法猜测它们的命名方式,除了最后一个字母是返回类型之外。


1
程序员以前很懒,他们想要函数的简短名称,这样用键盘写起来更快。四个字母已经足够了,甚至被认为太长了,但他们还是保留了它们,因为太懒而不愿改变。 - Antoine Pelletier
数组转整数 - el.pescado - нет войне
@AntoinePelletier我不会说是懒惰,我会说是内存受限。请记住,C语言是在非常有限的硬件上编写的(RAM以字节或可能是千字节为单位)。我相信C语言最初对函数名称有8个字符的限制。我个人曾经在一个系统上工作过,由于整个(多用户)系统仅有64Kb的RAM,因此无法在同一命令行上进行链式编译和链接! - Neil
@Neil 我只是开玩笑,我应该在我的帖子中加入一条 Chuck Norris 的事实来让它更明显。 - Antoine Pelletier
1
@AntoinePelletier 我错过了你的笑话飞过我的头顶时的呼啸声 :-) - Neil
1个回答

34
atoi  -> ASCII to integer.
atol  -> ASCII to long.
atof  -> ASCII to floating.
stoi  -> string to integer.
stol  -> string to long.
stoll -> string to long long.
stof  -> string to float. 
stod  -> string to double.
stold -> string to long double.

atoiatolatof源自于C语言,它们的创造者很可能是Ken Thompson,他是UNIX操作系统的共同创建者,并且创建了B编程语言,后者是C语言的前身。这些函数名在1971年11月3日发布的第一版UNIX程序员手册中被提到,在所有者标签中可以看到昵称为"ken"的Ken Thomson的名字。

enter image description here

enter image description here

自从C++11以来,stoistolstollstofstodstold被引入到了C++中。因此,这些命名必须是C++委员会的一致决定。但最初的提案N1803可以追溯到2005年。我在提案中找不到为什么要用这些名称来命名这些函数的原因。我的猜测是,他们可能想要保持与上面提到的C语言“等效”函数的统一性。

3
有趣的事实是,这些功能同样适用于EBCDIC字符表。 - πάντα ῥεῖ
2
11/3/71 - 哇。你在现实生活中有这本书吗? - Jared Burrows
@JaredBurrows 当时,我甚至还没有成为我父亲心中的一个概念。 - 101010
@101010 好的。我是认真的,因为我还有一本我父亲送给我的C语言书。 - Jared Burrows
1
@JaredBurrows,我猜有一个生活在信息时代开端的父亲应该很不错吧,可以聊很多东西:)。然而,在我成长的地方,我的父母并没有那么幸运。当时,如果孩子完成了小学,那就是一项成就了。书籍很少,许多地区没有电力。感谢自由和勇敢的国度美国,我们现在拥有互联网,并且这些书籍以及其他许多书籍都可以在线上供每个人使用。 - 101010
@101010 很棒!感谢您提供了出色的答案和图片。 - Jared Burrows

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接