标准输入输出

标准输出概念最早起源于Unix操作系统,它默认有三个基本默认的I/O流:标准输入(stdin),标准输出(stdout)和标准错误(stderr)。

标准输入输出的概念形态

最简单的标准输入输出就是控制台或者Console(一般指代计算机屏幕),大部分现代化操作系统都提供的是控制台模拟器(比如Cmd.exe、macOS和Linux发行版的终端),因为现代操作系统支持可视化和多任务共享化,不允许应用程序独占显示器输出,不像远古时期开机就是黑色屏幕,只有命令行输入输出,真的是"控制台"。

  • DOS操作系统、macOS/Linux的单用户模式都能感受纯正的"控制台"。

不同语言的输入输出

从概念上,输入输出可以用全局变量、关键字、函数或者类库实现。

  • C语言用libc函数scanf/printf.

  • ObjC是C的超集,除了可使用C语言的输入输出,还定义了带时间戳的NSLog输出。

  • C++支持C语言的scanf/printf, 支持用全局iostream流对象cin和cout.

  • Java标准输入是静态对象System.in, 传给Scanner类调用next*系列方法,静态对象System.out为标准输出对象,提供print*系列方法作为输出。这种带类和方法的写法,比C/C++要繁琐。

  • C#利用Console类静态方法Read*和Write*实现输入输出,和Java类似,但输入更简洁一些。

  • Swift readLine()接收输入字符串,print作为标准输出。

  • Python 2.x print是关键字,Python 3 print改为函数,使用函数可以更灵活地控制输出。比如,我们可以改变输出的样式、格式或者添加更多的内容。Python的输入是input.

  • Ruby提供了不同输出方式,puts和print都是函数,puts比print多换行功能,p函数会按原文输出,而非对象。比如p "hello"输出"hello"而非hello.

  • VB设计目标为了可视化编程,输入输出设计的与众不同,窗体用Print显示字符串,InputBox和MsgBox展示输入输出,当然也可以调用Windows kernel*.dll的ReadConsole/WriteConsole函数,到.NET版本可使用类似C#风格Console.Read*/Write*.

  • JS可使用prompt和alert在客户端浏览器弹出输入和提示框,console.log提供日志输出。console最早是IE的JScript引擎才有的调试工具,后来逐渐变成标准。Node.js中,可利用readline实现命令行标准输入。

  • Rust输入是io::stdin().read_line, 输出是println!.

  • Go语言fmt.Scan是输入,fmt.Print*系列为输出,和C语言形似。

  • 仓颉用print/println作为输出,也可以用std.console包的Console*类做并发安全的输入输出。

  • Fortran的输入输出稍显怪异:
    print *, "hello world"
    read (*, *) age


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

相关推荐
狐狐生风30 分钟前
LangChain 向量存储:Chroma、FAISS
人工智能·python·学习·langchain·faiss·agentai
虹科网络安全32 分钟前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
狐狐生风39 分钟前
LangChain RAG 基础
人工智能·python·学习·langchain·rag·agentai
axng pmje1 小时前
Java语法进阶
java·开发语言·jvm
汉克老师1 小时前
GESP2025年3月认证C++五级( 第三部分编程题(1、平均分配))
c++·算法·贪心算法·排序·gesp5级·gesp五级
rKWP8gKv71 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫1 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287921 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本1 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
yaoxin5211232 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python