【求助求助】C++ 输入问题

Eritque arcus 2020-02-12 08:06:49
就我想实现一直输入(不管换行都输入)直到按下ESC(用GetAsyncKeyState(VK_ESCAPE)判断)
...全文
678 37 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 寻开心的回复:
不用那么复杂
自己模拟一下键盘缓冲
char buffer[1024];
int pos= 0;
while(1){
if ( _kbhit() ) {
ch = getch();
if( ch == 27 ){ // ESC
你要干啥就干啥
break;
} else if( ch == ‘\n' ) {
把buffer送去,从中读数据
pos=0;
} else {
buffer[pos++] = ch;
}
}
你这是个鬼模拟,容量都写死了
BLFR1978 2020-02-21
  • 打赏
  • 举报
回复
拿分,谢谢支持 支持 支持
Eritque arcus 2020-02-16
  • 打赏
  • 举报
回复
引用 36 楼 IWTBM 的回复:
[quote=引用 7 楼 N-n-N的回复:][quote=引用 3 楼 寻开心 的回复:] 不用那么复杂 自己模拟一下键盘缓冲 char buffer[1024]; int pos= 0; while(1){ if ( _kbhit() ) { ch = getch(); if( ch == 27 ){ // ESC 你要干啥就干啥 break; } else if( ch == ‘\n' ) { 把buffer送去,从中读数据 pos=0; } else { buffer[pos++] = ch; } }
那如果我想像cin一样的效果,只不过cin是遇到回车结尾我是esc结尾?有没有可能实现[/quote] 也可以 cin一个char 一个char 的去读取不就行了[/quote]cin可以一次读一个?还是读入然后取一个?然后cin好像读不了特殊字符比如esc?
IWTBM 2020-02-16
  • 打赏
  • 举报
回复
引用 7 楼 N-n-N的回复:
[quote=引用 3 楼 寻开心 的回复:] 不用那么复杂 自己模拟一下键盘缓冲 char buffer[1024]; int pos= 0; while(1){ if ( _kbhit() ) { ch = getch(); if( ch == 27 ){ // ESC 你要干啥就干啥 break; } else if( ch == ‘\n' ) { 把buffer送去,从中读数据 pos=0; } else { buffer[pos++] = ch; } }
那如果我想像cin一样的效果,只不过cin是遇到回车结尾我是esc结尾?有没有可能实现[/quote] 也可以 cin一个char 一个char 的去读取不就行了
wwwgc119 2020-02-15
  • 打赏
  • 举报
回复
支持 支持 支持
wwwgc119 2020-02-15
  • 打赏
  • 举报
回复
支持 支持 支持
Eritque arcus 2020-02-15
  • 打赏
  • 举报
回复
引用 32 楼 B11ack 的回复:
其实我建议最好不要乱弄
???乱弄什么??写个代码就乱弄了??
B11ack 2020-02-15
  • 打赏
  • 举报
回复
其实我建议最好不要乱弄
Eritque arcus 2020-02-15
  • 打赏
  • 举报
回复
引用 30 楼 yuyaozwz 的回复:
退出是ctrl加z我记得 ,你就一直while cin 就行了
是我想实现esc退出好吧...而且问题已经解决了,代码在26楼
Designer 小郑 2020-02-15
  • 打赏
  • 举报
回复
退出是ctrl加z我记得 ,你就一直while cin 就行了
Eritque arcus 2020-02-14
  • 打赏
  • 举报
回复
引用 28 楼 qq_39479638 的回复:
你想做个模拟键盘吗?鼠标点在界面程序那种,这种可去掉键盘输入,但组合键另定义。用api不如c,c++标准库函数灵活好用。
不不不,我想做的是仿vim风格的文本编辑器,已经把基础的做好了,项目地址见26楼
qq_2726256291 2020-02-14
  • 打赏
  • 举报
回复
你想做个模拟键盘吗?鼠标点在界面程序那种,这种可去掉键盘输入,但组合键另定义。用api不如c,c++标准库函数灵活好用。
Eritque arcus 2020-02-14
  • 打赏
  • 举报
回复
https://github.com/Nambers/Text-editor 代码我传上去了,要的自取
Eritque arcus 2020-02-14
  • 打赏
  • 举报
回复
引用 19 楼 寻开心 的回复:
这种字符编辑的直接定位,只更改当前光标的一个字符都可以; 汉字处理才真的麻烦。 做软件怕麻烦是不行的, 本来就是一个细致的活儿
谢谢啦,除了汉字都搞出来了,包括命令行参数之类的
Eritque arcus 2020-02-13
  • 打赏
  • 举报
回复
引用 19 楼 寻开心 的回复:
这种字符编辑的直接定位,只更改当前光标的一个字符都可以; 汉字处理才真的麻烦。 做软件怕麻烦是不行的, 本来就是一个细致的活儿
okok我尝试一下,谢谢啦
寻开心 2020-02-13
  • 打赏
  • 举报
回复
这种字符编辑的直接定位,只更改当前光标的一个字符都可以; 汉字处理才真的麻烦。
做软件怕麻烦是不行的, 本来就是一个细致的活儿
Eritque arcus 2020-02-13
  • 打赏
  • 举报
回复
引用 19 楼 寻开心 的回复:
这种字符编辑的直接定位,只更改当前光标的一个字符都可以; 汉字处理才真的麻烦。
做软件怕麻烦是不行的, 本来就是一个细致的活儿
搞定了,可以输入数字和英文字母,然后还可以通过上下左右箭头控制,明天试着把汉字和我之前写的加密模块放进去,谢谢啦
Eritque arcus 2020-02-13
  • 打赏
  • 举报
回复
引用 17 楼 寻开心 的回复:
自己记录每一行的字符串 屏幕上的光标位置,有个gotoxy函数, conio.h还是system.h 忘了,自己百度去
用过了,主要就是怎么退格这个问题,我之前做的是一个一维的string数组,一行一个string,当前列和行单独变量计算,然后本来是想操作一次就清空那一行,然后输出那个string,但是做起来比较麻烦而且容易出错,是不是没有其他办法了
你知我劲 2020-02-13
  • 打赏
  • 举报
回复
拿分走人
引用 3 楼 寻开心 的回复:
不用那么复杂 自己模拟一下键盘缓冲 char buffer[1024]; int pos= 0; while(1){ if ( _kbhit() ) { ch = getch(); if( ch == 27 ){ // ESC 你要干啥就干啥 break; } else if( ch == ‘\n' ) { 把buffer送去,从中读数据 pos=0; } else { buffer[pos++] = ch; } }
6的一批
plovesnet 2020-02-13
  • 打赏
  • 举报
回复
支持 支持 支持
加载更多回复(17)

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧