可以将所有键都表示为c ++中的单个char吗?

时间:2010-02-03 04:51:30

标签: c++ char special-characters escaping

我一直在搜索,我似乎无法找到一种方法来表示箭头键或转义键作为c ++中的单个字符。这甚至可能吗?我希望它分别与tab和new行类似于\ t或\ n。每当我搜索转义字符时,只有五六个众所周知的字符列表。

4 个答案:

答案 0 :(得分:11)

简短的回答是否定的。

长的答案是标准ANSI字符集中有许多控制字符(从十进制1到十进制31,包括在内),其中包括换行,回车,文件结束的控制代码,等等。一些通常被解释为箭头和转义键,但仅用于与终端兼容。

标准PC键盘发送一个2或3字节的控制代码,代表按下的键,它处于什么状态,按下哪个控制/ alt / shift键,以及其他一些东西。您需要查找“密钥代码”以了解如何处理它们。处理它们在操作系统和您使用的基础库之间有所不同,它们的含义因操作系统配置的键盘布局(可能包括ANSI字符集中找不到的字符)而异。

答案 1 :(得分:1)

不可能;为某些语言构建的键盘具有无法在char中表示的字符,无论如何,如何在char中表示control-option-command-shift-F11?

键盘发送扫描码,扫描码是GUI系统中的某种事件或表示密钥的短字节串。什么代码取决于您的系统,但在大多数类似终端的系统上,ncurses知道如何处理它们。

答案 2 :(得分:0)

char变量通常表示ASCII表中的元素 http://www.asciitable.com/
unix上还有man ascii。如果你想要箭头键,你需要一种更直接的方式来访问键盘输入。在按下stdio之前,箭头键会被转换为字符序列。如果oyu想要直接键盘访问,可以考虑使用GUI库,sdl,直接输入等等。

答案 3 :(得分:0)

箭头键没有任何转义字符。它们表示为密钥代码,afaik。我建议使用更高级别的输入库来检测按键。如果您想从头开始,所采用的方法可能会因您编程的特定平台而异。

无论如何,早在TURBO C时代,我用过 -

//Wait for keypress
//store input in ch  
//see if the ASCII code matches the code for one of the arrow keys