C++ 在C+中创建一个简单的文本编辑器+;

C++ 在C+中创建一个简单的文本编辑器+;,c++,C++,我在上CS162课,这周我的任务是创建一个非常非常简单的文本编辑器,它会提示用户输入一个段落,完成后键入#,然后程序会进行简单的编辑,例如将句子开头的单词大写,并将常见错误(如“teh”)改为“the”。现在,我总是很难开始做这些事情;我确切地知道如何纠正错误(让程序搜索拼写错误,并用正确的拼写替换这些单词/using.upper改为大写),但我不能简单地让用户输入一个段落并以#结尾。我会使用允许用户继续键入直到他们键入#的循环吗?那会是什么样子?抱歉,如果这看起来过于基本;因为我是一个很早的初

我在上CS162课,这周我的任务是创建一个非常非常简单的文本编辑器,它会提示用户输入一个段落,完成后键入#,然后程序会进行简单的编辑,例如将句子开头的单词大写,并将常见错误(如“teh”)改为“the”。现在,我总是很难开始做这些事情;我确切地知道如何纠正错误(让程序搜索拼写错误,并用正确的拼写替换这些单词/using.upper改为大写),但我不能简单地让用户输入一个段落并以#结尾。我会使用允许用户继续键入直到他们键入#的循环吗?那会是什么样子?抱歉,如果这看起来过于基本;因为我是一个很早的初学者,所以我总是很难开始使用程序。谢谢。

使用CONIO.H

您可以使用以下功能:

getch()-从控制台读取字符,而不使用缓冲区或回显

kbhit(),用于确定是否按下了键盘键

得到你想要的东西

编辑: 这是针对Linux系统的用户Falcom Momot提供的:

#include <unistd.h>
#include <termios.h>
char getch() {
    char buf = 0;
    struct termios old = {0};
    if (tcgetattr(0, &old) < 0)
            perror("tcsetattr()");
    old.c_lflag &= ~ICANON;
    old.c_lflag &= ~ECHO;
    old.c_cc[VMIN] = 1;
    old.c_cc[VTIME] = 0;
    if (tcsetattr(0, TCSANOW, &old) < 0)
            perror("tcsetattr ICANON");
    if (read(0, &buf, 1) < 0)
            perror ("read()");
    old.c_lflag |= ICANON;
    old.c_lflag |= ECHO;
    if (tcsetattr(0, TCSADRAIN, &old) < 0)
            perror ("tcsetattr ~ICANON");
    return (buf);
#包括
#包括
char getch(){
char-buf=0;
结构termios old={0};
if(tcgetattr(0,&old)<0)
perror(“tcSetttr()”);
old.c_lflag&=~ICANON;
old.c_lflag&=~ECHO;
old.c_cc[VMIN]=1;
old.c_cc[VTIME]=0;
if(tcsetattr(0、TCSANOW和old)<0)
佩罗尔(“tcsetattr ICANON”);
如果(读取(0,&buf,1)<0)
perror(“read()”);
old.c|lflag |=ICANON;
old.c|lflag |=回声;
if(tcsetattr(0、TCSADRAIN和old)<0)
佩罗尔(“tcsetattr~ICANON”);
返回(buf);

}

为什么不能让他们在点击返回前打字?我不知道。。。那会容易得多,不是吗?不,我们必须做这件事。。。这是一项要求,我不知道为什么。为了清楚起见,他们在段落末尾加上
#
,然后按回车键,对吗?如果OP不在windows机器上怎么办?啊,对了。。。因此,在linux机器上,这可以使用termios.h来完成。我将在某个地方编辑一些我标记为书签的代码……老实说,我猜OP的用户可以点击return。“α”位只是为了区分流中的换行符和结束段落的换行符。虽然他能输入5个句子并按回车键5次,但在a#结尾之前它不是一个段落。这实际上使避免处理单个按键变得更容易。这是真的,而且这将是一种更容易的方式来做他想做的事情。啊,等等,这一定是我教授的意思。哇,我现在觉得自己很蠢。非常感谢,伙计们。