C++标准库有多少跨平台功能?

4

在iOS和Android平台上(使用JNI/NDK),C++标准库(例如std::string stream)是否可用?如果可以:

它的支持程度如何? 如何处理桌面特定功能,例如控制台? 它有多快/可靠? 它在多少其他移动平台上可用? 当移植到移动平台(例如iOS)时,我能否放心不必修改太多使用std库的代码?


我对那些平台不熟悉,但标准库应该在所有有C++编译器的平台上都可用。 - David Rodríguez - dribeas
2个回答

2
C++标准库可用于两个平台。此外,iOS已经使用了相当一段时间的C++11。
这两个平台都基于POSIX,具有控制台IO的概念,但是在用户界面上都没有提供对其的访问,并且在两个平台上,您都不能(至少默认情况下)直接运行控制台应用程序。
因此,很明显,您不能使用控制台IO与应用程序进行任何类型的用户交互 - 除非您使用平台的用户界面API来构建它。
就可移植性而言,在任何一个平台上都不应该存在任何问题 - 在Android上是GNU Std G++库,在iOS上是Clang C++库。在iOS上,可移植性不是问题,但您可能会在Android上构建JNI绑定时遇到问题。
实际上,您只能够在C++中构建应用程序的后端。所有用户界面都将是非常特定的,通常需要使用UI框架语言进行实现。
Windows Phone 8允许本机应用程序,并且C++似乎是实现它们的首选语言。BlackBerry OS 10在底层基于QNX,也符合POSIX。

事实上,你只能用C ++构建应用程序的后端。你说得对:我正在开发一个跨平台游戏引擎,虽然C++可以在许多平台上编译,但我仍然需要为每个平台编写一段平台特定的代码,例如:对于iOS,我正在编写大量的Objective-C代码作为我的C++的封装。 - PersonWithName

1
据我所知,标准库应该在所有平台上都是标准的。它们的内部实现可能会有所不同,但它们应该执行其引入的任务。
通常情况下,标准库非常高效、快速且经过充分测试,因此应该是可靠的。
实际问题是,标准库应该随C++实现一起包含,但是否包含完全取决于实现C++的供应商。 即使他们不包括标准库,你仍然有很高的机会在该平台找到替代实现。然后,你只需要将该库与你的代码链接即可。
假设存在支持主要功能的C++编译器。
即使不可能,你也可以将所需的标准函数作为自定义库移植到该特定平台。
希望这有所帮助,

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接