C++-标准C++库跨平台效果如何?

C++-标准C++库跨平台效果如何?

甜柠檬 发布于 2017-04-11 字数 243 浏览 1340 回复 2

看到一篇文章说:“标准C++库跨平台效果也不佳。直到近几年Boost为代表的现代C++库起到了很大的作用。”
有个疑问是c++标准库的跨平台效果差在哪里,而boost的跨平台效果优在哪里。能举个例子说明一下吗?体现一下c++标准库跨平台的缺点~.

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清晨说ぺ晚安 2017-10-08 2 楼

其实我觉得C++跨平台效果差只是个人的观点。因为有别的更容易的方法了。就比如说Qt,已经用了自己实现的容器了。而且还有Qt的容器到标准库容器的转换。所以在用了Qt的情况下肯定不会选择再去用C++的标准库了。至于boost比标准库优秀这个倒不是很清楚了。不过boost比标准库更强大是肯定的,由于对boost了解的比较少,所以不好做太多评论

灵芸 2017-04-19 1 楼

应该不是什么标准C++库跨平台效果不佳,而是有些语句可移植性不强,例如路径名a和文件名b.txt合成为绝对路径,在unix下是a/b,在windows下是ab,这时候就需要有个间接层,帮你完成这个操作,例如python的OS模块有os.join(a,b)函数,而由于python的OS模块在unix下,windows都有实现,这样,通过这一层,你的python代码os.join(a,b)在两个平台都可以用。

boost应该是提供了很多这种跟平台有关的操作的抽象,通过提供一个统一的函数,程序员只要调用它的函数,在unix平台,编译时链接的代码就是unix版本的,在windows,链接的就是windows版本的,而程序员就不用管比如unix和windows的目录是用还是/等。

标准c++库按定义来讲,应该是各平台只要支持标准,就是统一接口,统计函数语义,根本没什么移植性问题,只是可能就是平台它根本没有标准C++库实现,那没法搞啊,你根本就无法编译,不过应该也不会有平台标准C++库都没实现,却有boost库实现吧,那boost也太逆天了~

综上,我觉得那句话的意思应该是,标准C++库没有提供很多函数,而boost增加了其数量,像boost::filesystem,通过把平台相关的操作封装在统一函数里,C++的可移植性增强了。