微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么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);

原文地址:https://www.jb51.cc/c/111919.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐