📅  最后修改于: 2023-12-03 15:03:14.009000             🧑  作者: Mango
在 Node.js 中,process.stdin
属性是一个可读流(Readable stream),表示当前进程的标准输入(stdin)。它提供了一种处理标准输入数据的方式。
要从 process.stdin
中读取数据,您可以添加一个 'data'
事件监听器,然后调用 process.stdin.resume()
方法以使其保持活动状态。下面是一个简单的例子:
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data', function (chunk) {
console.log('数据来了:' + chunk);
});
在上述例子中,我们监听了 'data'
事件,以便在读取到数据时打印出来。在这里将 process.stdin.resume()
方法调用是为了使输入流一直处于活动状态。
对于标准输入,您需要知道什么时候它已经完成输入。这是通过检测 end
事件来完成的。调用 process.stdin.end()
方法将触发这个事件,当 stdin
流中有数据时,也会自动触发。
在处理标准输入时,要注意如何处理特殊字符。例如,在 Windows 上使用 Ctrl + Z 可以退出程序。在 UNIX 上,您需要使用 Ctrl + D
。以下是每个操作系统的特殊字符列表:
下面是一个完整的程序,它将从控制台读取输入并计算出输入每个数的和。
process.stdin.resume();
process.stdin.setEncoding('utf8');
let sum = 0;
process.stdin.on('data', function (chunk) {
const numbers = chunk.trim().split(' ');
numbers.forEach(function (number) {
sum += Number(number) || 0;
});
});
process.stdin.on('end', function () {
console.log('和:' + sum);
});
在这个例子中,我们监听了 data
事件以读取输入。每次事件触发时,我们读取一行输入,将其分解成数字并将其添加到 sum
变量中。最后,我们监听了 end
事件,以便在输入结束时打印出总和。
process.stdin
属性提供了一种处理标准输入数据的方式,使 Node.js 可以以流的方式读取标准输入。要处理标准输入,您需要注意如何处理特殊字符,并在结束时检查 end
事件。