
这是一张展示图片,以下是正文(点击标题进入正文)
基于node的readline一样可以使用标准流的输入输出
对于大学生在刚开始学习c ,c++, java的时候,写着hello word的代码,然后在命令框中输入输出; 基于很多算法的学习,在我短浅的认识中,身边的同学都是使用 c, c++,甚至是java去写; 很多算法题目中的输入描述和输出描述 例如牛客网上的算法题:

类似于这种的东西,在杭州acm的算法题目也是。
诀窍——使用nodejs内置封装好的readline模块;
1.readline 模块 【逐行读取】
readline主要的功能是提供了一个可以从可读流中读取数据;
这里可以对nodejs的 可读流和可写流 进行深入研究
2.如何使用readline?
一个基本的例子:
1 2 3 4 5 6 7 8 9 10
| const readline = require('readline');
const option ={ input:process.stdin, output:process.stdout, prompt:'>>' } const rl = readline.createInterface(option); rl.question('你觉得js的这个模块怎么样?', (answer) => { console.log(`你觉得:${answer}`); });
|
详情可以点击我的github的readline_dome.js
3.进一步扩展去应用
3.1例如做一个简单的命令行界面;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, prompt: 'input> ' }); rl.prompt(); rl.on('line', (line) => { switch (line.trim()) { case 'hello': console.log('world!'); break; default: console.log(`你输入的是:'${line.trim()}'`); break; } rl.prompt(); }).on('close', () => { console.log('再见!'); });
|
3.2类似于牛客网编程的例子;
这是一个单行读取的demo
1 2 3 4 5 6 7 8 9
| const readline = require('readline'); const fs = require('fs')
const options={ input:process.stdin, output:process.stdout } const rl = readline.createInterface(options);
rl.on('line',function(line){ line.trim(); console.log(`你输入的值(移除前导空格、尾随空格和行终止符):${line.trim()}`) })
|
这是一个多行读取的demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| const readline = require('readline'); const fs = require('fs') const options={ input:process.stdin, output:process.stdout } const rl = readline.createInterface(options);
var n = -1; var sum = (a,b)=>a+b; var arr =[]; rl.on('line',function(line){ if(n == -1){ n = parseInt(line.trim()); console.log('n:'+n) } else{ arr.push(line.trim()); if(n == arr.length){ var result = arr[1]; var result = sum(arr[0],arr[1]); console.log("result:"+result) arr.length=0; n=-1; } } })
|
来自在牛客网上在线编程的痛点,由于一开始在javascript使用算法编程,不太懂得js的输入输出流, 做起来在这上面花了不少时间 - -!
[nodejs] http://nodejs.cn/api/readline.htmlnodejs
[console.log] https://segmentfault.com/a/1190000012957199#articleHeader0console.log
[ob.trim()] https://msdn.microsoft.com/library/ff679971(v=vs.94).aspx