我要去刺这个......
模板std::basic_string最初编写并列入STL,它代表了标准库的"抽象"的部分,因为我们知道它(容器,迭代算法,分配器,等等).这也包括在内std::string.
请注意STL中绝对没有编码,国际化或语言环境相关的功能.这不是设计目标.
现在我接受前几代人的事件:当C++标准化时,需要一个全面的标准库.STL非常适合这种情况,几乎是逐字逐句接管的.只是后来才是喜欢<iostream>和<locale>添加的东西.流和字符串之间的笨拙和非常不连贯的界面差异只能证明这种"让我们把它放在一起"的态度.
与许多std设施一样,组件之间的互操作性未得到优化.最重要的是,包含现有C功能(如toupper)的小型C++函数的简单性被用作不将其包含在标准库中的原因.
通过标准的下一版本(以及它所包含的库),向后兼容性阻止了添加任何有用和必要的更改(将语言环境注入std::string功能).
请注意,这个猜想根本没有解释为什么例如std::trim没有添加字符串和语言环境对象.它试图解释所涉及的背景过程.
既然已经说过了,我完全同意C++标准库的一般用处是笨重且不完整的.
更新:我被告知我的时间表是相反的:标准库(和iostream)在添加STL之前就已存在.上面的观点仍然有效:STL是复制粘贴的,几乎没有集成(简单的例子:直到最近才丢失std::basic_istream<T>::open(const std::basic_string<T>&),由于std::filesystem填充物将在下一次迭代中弃用).
| 归档时间: |
|
| 查看次数: |
1093 次 |
| 最近记录: |