更常见的问题是为什么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);