25.1.3 平台相关的特性
C++(www.cppentry.com)是一门卓越的通用语言。加上标准库,这个语言带有了太多的特性,多年来业余程序员可以轻松编写C++(www.cppentry.com)代码,而不用考虑内建特性之外的特性。然而,专业的程序需要使用C++(www.cppentry.com)没有提供的设施。本节列出了一些由平台提供的重要特性,这些特性不是C++(www.cppentry.com)语言提供的。
图形用户界面:如今大多数商业程序度运行在一个有图形用户界面的操作系统上,图形用户界面的元素包括可点击的按钮、可移动的窗口以及分层菜单等。C++(www.cppentry.com)和C语言一样,都没有这些元素的概念。要用C++(www.cppentry.com)编写一个图形应用程序,需要使用特定于平台的库才能绘制窗口、通过鼠标接受输入并执行其他图形任务。
网络:因特网已经改变了我们编写应用程序的方式。如今,大多数应用程序都通过网络检查更新,游戏都提供了联网多人模式。尽管有好几个标准库,但是C++(www.cppentry.com)没有提供网络机制。编写网络软件的最常用方法是使用一种名为套接字(socket)的抽象。大部分平台上都能看到套接字库的实现,套接字为网络数据传输提供了一种简单的面向过程的方法。某些平台支持基于流的网络系统,操作类似C++(www.cppentry.com)中的I/O流。由于IPv4的IP地址紧缺,IPv4的后继者IPv6很快就要取代IPv4了。因此,选择一个IP版本无关的网络库比选择只支持IPv4的库更好。
操作系统事件和应用程序交互:纯C++(www.cppentry.com)代码和周围的操作系统和其他应用程序的交互很少。在标准的没有使用平台扩展的C++(www.cppentry.com)程序中,命令行参数是程序获得的所有内容。例如,复制和粘贴这类操作在C++(www.cppentry.com)中就不能直接支持,而是需要平台提供的库。
低级文件操作:第15章讲解了C++(www.cppentry.com)中的标准I/O操作,包括读取和写入文件。很多操作系统都提供了自己的文件API,有时这些API和C++(www.cppentry.com)中标准的文件类不兼容。这些库通常提供了特定于操作系统的文件工具,如获得当前用户主目录的机制。
线程:C++(www.cppentry.com)03和之前版本的C++(www.cppentry.com)没有直接支持在一个程序中并发线程的执行。C++(www.cppentry.com)11包含了一个线程库,详见第22章。如果您的编译器还不支持C++(www.cppentry.com)11的线程库,您需要使用第三方库。最常用的第三方线程库是pthreads。很多操作系统和面向对象的框架还提供了自己的线程模型。