c++ - 为什么整数到字符串的转换直到现在才明确包含在 C++ 中?

标签 c++ c string c++11 string-conversion

<分区>

我在学习 C++ 时遇到的第一个问题是 itoa 函数在某些编译器上受支持,但实际上并没有在 ANSI-C 标准中定义(因此通常被认为是不好的做法使用)。

我见过很多解决方案,比如使用stringstream或者snprintf,总觉得很迂回,终于在C++11中有了 std::to_string 从语言的角度来看感觉更清晰。

但为什么要花这么长时间才能添加更直接的方法?除了一些关于效率的讨论和没有充分理由就不想改变标准之外,我很难找到任何东西。有没有正式说明为什么不包括它或者为什么他们最终决定将它添加到 C++11 中?是否讨论过将此添加到 C 的 future 修订版中?

最佳答案

事后看来,这是一个疏忽。然而,在不了解 C++ 发展历史的细节的情况下,我敢猜测这种疏忽有充分的理由, Root 于理论上。看,从数字到字符串的转换以及从数字到字符串的转换远非微不足道,而且它不太符合“强制转换”的正常定义(实际上,它需要解析器/格式化程序),即使大多数其他语言 < em>确实提供这样的类型转换。

除此之外,C++ 对字符串类型的支持相当……普通。 C 甚至没有真正的专用类型,它使用 char 数组代替。 C++ 略微更进一步,但由于缺乏适当的内置字符串支持而止步不前。这可以从很多方面看出,从字符串文字仍然是一个空终止的 char 数组这一事实,到人们普遍认为 std::string 有一个臃肿的,界面设计不佳。不要忘记 std::string 甚至不代表字符串!它代表一个字节数组!这是一个重要的区别,原因很简单,std::string 是完全不可知的编码。

啊,但是 C++ 实际上确实 支持正确的编码、正确的解析和格式化。它根本不为字符串提供它——它为提供它。

我们已经有了。 C++ 没有合适的字符串类型。相反,它具有输入/输出流。

关于c++ - 为什么整数到字符串的转换直到现在才明确包含在 C++ 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20447238/

相关文章:

c++ - 我无法在 Cygwin 中使用 Visual Studio 中的 cpp 文件

c - 如何在 OS X 10.10.1 上正确安装 cs50.h 库?

c - 为什么这个数组不够大?

JavaScript - 如何查找字符串中正则表达式的所有实例?

c++ - 使用全局引用调用函数时发生访问冲突

c++ - 用于非 UI 应用程序的 Qt?

php - 即时编写 $_POST 变量脚本

c - 相当于 NULL 的字符串是什么?

c++ - 为什么小数点后的数字都是零?

c - 从链表中添加和删除节点