猿问

从标准输入中捕获字符,而无需等待按下Enter

从标准输入中捕获字符,而无需等待按下Enter

给定JS对象

var obj = { a: { b: '1', c: '2' } }`

和一根绳子

"a.b"

如何将字符串转换为点表示法,这样我就可以

var val = obj.a.b

如果字符串只是‘a’,我可以用obj[a]但这更复杂。我想有一些直截了当的方法,但目前它逃脱了。


慕斯709654
浏览 518回答 3
3回答

白衣非少年

在Linux(和其他类似Unix的系统)上,这可以通过以下方式完成:#include&nbsp;<unistd.h>#include&nbsp;<termios.h>char&nbsp;getch()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;buf&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct&nbsp;termios&nbsp;old&nbsp;=&nbsp;{0}; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(tcgetattr(0,&nbsp;&old)&nbsp;<&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror("tcsetattr()"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;old.c_lflag&nbsp;&=&nbsp;~ICANON; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;old.c_lflag&nbsp;&=&nbsp;~ECHO; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;old.c_cc[VMIN]&nbsp;=&nbsp;1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;old.c_cc[VTIME]&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(tcsetattr(0,&nbsp;TCSANOW,&nbsp;&old)&nbsp;<&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror("tcsetattr&nbsp;ICANON"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(read(0,&nbsp;&buf,&nbsp;1)&nbsp;<&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror&nbsp;("read()"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;old.c_lflag&nbsp;|=&nbsp;ICANON; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;old.c_lflag&nbsp;|=&nbsp;ECHO; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(tcsetattr(0,&nbsp;TCSADRAIN,&nbsp;&old)&nbsp;<&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perror&nbsp;("tcsetattr&nbsp;~ICANON"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(buf);}基本上,您必须关闭规范模式(和回波模式,以抑制回波)。

白猪掌柜的

我对它做了一些修改。效果很好。我正在运行OSX,所以如果您运行的是Microsoft,那么您需要找到正确的system()命令才能切换到原始模式和熟模式。#include <iostream> #include <stdio.h>  using namespace std;  int main() {    // Output prompt    cout << "Press any key to continue..." << endl;    // Set terminal to raw mode    system("stty raw");    // Wait for single character    char input = getchar();    // Echo input:   cout << "--" << input << "--";   // Reset terminal to normal "cooked" mode    system("stty cooked");    // And we're out of here    return 0; }
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答