为什么我运行C++程序时会打开终端窗口,
std::cout
如何知道它要输出到该终端?std::cout
如何知道它要输出到该终端?每个操作系统都有一个称为“标准输出流”的东西,当您使用cout时,C++只是告诉操作系统将其打印到流中。操作系统会确定输出位置。
编译器会识别你正在编写控制台应用程序,并提供适合你所编写程序类型的运行时环境。
通常在启动新项目时选择应用程序类型,但在旧版编译器中,控制台类型是唯一可用的类型。MS-DOS和CP/M提供了终端服务,其中命令行解释器如“command.com”将是默认程序,可以调用其他程序如“myCppApp.exe”。
终端服务包括输入流(键盘输入)和输出流(屏幕显示)。这些被视为特殊文件,只读(cin)和只写(cout)。
C/C++通过cin/cout提供对这些标准磁盘操作系统服务的访问。
当Windows出现时,人们不再使用文本控制台(在某些计算机启动或BIOS设置中仍然可以看到),而是更喜欢使用模拟文本控制台的虚拟控制台窗口。
因此,这种情况是操作系统提供虚拟环境和编译器提供基于构建控制台应用程序的运行时代码的组合。
std::cout
输出到控制台,操作系统负责使其工作。如果你正在编写基于GUI的应用程序,你需要使用提供适当函数的库,同样,当你进行GUI调用时,操作系统负责使其工作。 - Pete Becker
std::cout
将字符发送到标准输出流。操作系统会安排被发送到标准输出流的字符出现在终端上(或被重定向到文件、管道或其他地方);这部分内容不属于 C++ 语言的范畴。 - Igor Tandetnikmain()
之前执行)的工作是将诸如std::cout
之类的东西与某些东西(监视器、窗口等)关联起来。这通常涉及操作系统的支持,操作系统可以访问程序运行的上下文(例如,它知道哪个命令行 shell 或窗口启动了程序,因此可以相应地链接输出和输入流)。 - Peter