我想编写 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();
});
我是一名优秀的程序员,十分优秀!