为什么C不使用C元素/样式重新实现C标准函数?
对于一个具体的例子,考虑atoi(con??st std :: string&).这是非常令人沮丧的,因为我们作为程序员需要使用它太多.
更常见的问题是为什么C标准库不用C字符串,C矢量或其他C标准元素重新实现标准C库,而不是保留旧的C标准库,并强制我们使用旧的char *接口? PS:考虑到第一个具体问题的更多答案,我编辑了很多,以澄清问题,以概述我更好奇的问题. 解决方法
因为老C图书馆做的伎俩. C标准库只能重新实现现有功能,如果它们可以比旧版本好得多.而对于C图书馆的一些部分,编写新的C-implementation的好处并不足以证明额外的标准化工作. 对于atoi等,在std :: stringstream类中的C标准库中有新版本. 要将类型T转换为类型U: T in; U out; std::stringstream sstr(in); sstr >> out; 与IOStream库的其余部分一样,它并不完美,它是非常详细的,它是非常缓慢的等等,但它的工作,通常它是足够好的.它可以处理所有大小,浮点值,C和C字符串以及定义运算符“<”的任何其他对象的整数.
Boost有一个boost :: lexical_cast,它包装std :: stringstream.使用该功能,您可以将以上内容写为: U out = boost::lexical_cast<U>(in); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |