c++ - 有没有办法使用 C++ 实时阅读文本?
问题描述
基本上我要做的是一个控制台程序,它必须读取我正在输入的每个字符,并且它必须在输入时将每个字符存储在一个链表中。但是,如果执行 Backspace,则必须在执行此操作时从结构中删除该字符。
有没有办法或功能来做到这一点?我正在使用 Windows。
解决方案
可以conio.h
在windows下使用。您只需while
循环读取和处理任何键盘输入。这是一个简单的例子:
#include <conio.h>
#include <iostream>
#include <list>
int main()
{
std::list<char> myChars; // to store what your chars
std::cout << "START WRITING: ";
while(true)
{
// read the character and perform some logic
char val = _getch();
if (static_cast<int>(val) == 8) // backspace: pop_back
{
myChars.pop_back();
std::cout << "\b" << " " << "\b";
/* no idea how to go up to the previous line in a console :( */
}
else if (static_cast<int>(val) == 13) // enter/return: new line
{
myChars.push_back('\n');
std::cout << "\n";
}
else if (static_cast<int>(val) == 27) // escape: exit
{
break;
}
else // push_back
{
myChars.push_back(val);
std::cout << val;
}
}
推荐阅读
- sql - 11 个常规查询或 10 个 INNER JOIN 查询哪个更好?
- javascript - JSDoc - 如何在返回其子类实例的超类中记录静态方法?
- javascript - 删除/隐藏浏览器在左下角生成的“Waiting for someapicall.com ...”?
- azure - 如何将现有的 azure 函数导出到 vs 代码
- java - 使用 Java 从 .dat 文件中读取对象
- javascript - 有没有办法在 ifelse 函数中返回原始值?
- amazon-web-services - 通过 AWS Systems Manager SSH 访问私有 VPC 中的 RDS
- html - 如何在css网格中居中图像
- python - 使用 for 循环绘制多个移动平均线
- swift - 如何使用 Swift 检测 dynamodb 表中的变化?