gpt4 book ai didi

javascript - 如何在控制台中处理标准输入 NodeJS?

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:33 26 4
gpt4 key购买 nike

我想编写 NodeJS 代码来解决 ICPC 等问题。以下是使用 www.hackerrank.com 模板在 JavaScript 中提交的示例:

process.stdin.resume();
process.stdin.setEncoding('ascii');

var input_stdin = "";
var input_stdin_array = "";
var input_currentline = 0;
process.stdin.on('data', function (data) {
input_stdin += data;
});
process.stdin.on('end', function () {
input_stdin_array = input_stdin.split("\n");
main();
});
function readLine() {
return input_stdin_array[input_currentline++];
}
/////////////// ignore above this line ////////////////////
function main() {
var s = readLine();
s = s.split(",");
s = s.join(" ");
process.stdout.write(s);
}

我想离线编码,因此我需要在 Windows 控制台中运行程序。为了使用 C:users\user>node path\file.js 运行脚本,我在代码末尾添加了以下行

main();

并且脚本运行,但它不处理标准输入。它在“s=s.split()”中给了我错误,错误是以下“TypeError:无法读取未定义的属性'split'”。如果有人知道如何 Node 处理标准输入,请帮助我。

最佳答案

您可以等待SIGINT,只要输入流收到CTRL+CSIGINT事件> 输入,通常称为 SIGINT。如果输入流收到 SIGINT 时没有注册任何 SIGINT 事件监听器,则会发出暂停事件。

当收到 SIGINT 时,您的 main() 函数将被调用,返回后,process.exit() 将关闭过程。

所以不要等待结束事件

process.stdin.on('end', function(){
input_stdin_array = input_stdin.split("\n");
main();
});

您可以等待“SIGINT”,如下所示:

process.on('SIGINT', function(){
input_stdin_array = input_stdin.split("\n");
main();
process.exit();
});

关于javascript - 如何在控制台中处理标准输入 NodeJS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48754337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com