为什么C不使用C元素/样式重新实现C标准函数?

对于一个具体的例子,考虑atoi(con​​st std :: string&).这是非常令人沮丧的,因为我们作为程序员需要使用它太多.

更常见的问题是为什么C标准库不用C字符串,C矢量或其他C标准元素重新实现标准C库,而不是保留旧的C标准库,并强制我们使用旧的char *接口?
它的耗时和在这两个界面之间翻译数据类型的代码是不容易优雅的.
>为了兼容的原因,考虑到现在有比现在更多的遗留C代码,并且保留这​​些C标准接口将使C代码到C的转换变得更容易?
>此外,我听说过许多其他库可用于C进行大量的增强和扩展到STL.so有库支持这些功能

PS:考虑到第一个具体问题的更多答案,我编辑了很多,以澄清问题,以概述我更好奇的问题.

解决方法

Another more general question is why do not STL reimplementate all the standard C libraries

因为老C图书馆做的伎俩. C标准库只能重新实现现有功能,如果它们可以比旧版本好得多.而对于C图书馆的一些部分,编写新的C-implementation的好处并不足以证明额外的标准化工作.

对于atoi等,在std :: stringstream类中的C标准库中有新版本.

要将类型T转换为类型U:

T in;
U out;
std::stringstream sstr(in);
sstr >> out;

与IOStream库的其余部分一样,它并不完美,它是非常详细的,它是非常缓慢的等等,但它的工作,通常它是足够好的.它可以处理所有大小,浮点值,C和C字符串以及定义运算符“<”的任何其他对象的整数.

EDIT:In addition,I have heard many other libraries avaliable for C++ make a lot of enhancement and extensions to STL.so does there libraries support these functions?

Boost有一个boost :: lexical_cast,它包装std :: stringstream.使用该功能,您可以将以上内容写为:

U out = boost::lexical_cast<U>(in);

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...