当他在 C++ 上键入时,我如何检查用户的输入?

How can i check user's input while he types it on C++?

作为一名新程序员,我正在做一些培训练习以适应 Windows 上的 C++。

从类型为 String 的用户那里获取输入,格式为:

    (any word) || (any word || <any word || any word> || (any word> etc.

实时警告用户,如果:

    () or/and <>  Are closed before the input ends.

例如,如果用户键入:

    (I am ok

到时候我得警告他,一个括号已经打开了,但是还没有关闭。

因为我是初学者,所以我对如何进行有点迷茫,我不喜欢现成的解决方案,而是一种继续进行的方式。

提前致谢。

只是一个想法:

  1. 使用定期自动刷新数据的文本编辑器。

  2. 这是个坏主意,但您可能必须使用无限循环定期检查所有数据,直到 EOF(文件结束)。(您可以使用 getchar())

仍然主要取决于 OS 如何处理文件 rwx

这对于标准 C 函数是不可能的,因为它们都在返回之前等待 line/file 指示符结束。用户必须在输入每个字母后按回车键。

此外,标准 C 无法重新定位您将在控制台中写入警告的位置。

由于这是一门初学者编程课程,您的老师似乎只是在寻找一个非标准的控制台功能。如果您的老师是某种恐龙,解决方案是使用 conio.h 中的函数。否则,如果你的老师是体面的,解决方案是使用 Ncurses 或 Windows API 控制台功能,或类似的现代平台相关解决方案。

首先,这是 C++ 而不是 C,因为我们在 C 中没有称为命名空间的东西。std 是一个 nampesapce。所以我们在 C 中没有 std::flush,正如评论中所解释的,你不需要它。

我只是告诉你怎么做(我不会写代码!):

您还没有告诉平台您正在编写代码假设它 windows

  1. 您应该使用名为 getche() 的函数。它从用户

  2. 获取一个字符
  3. 声明一个布尔变量,保存括号和angular括号的状态。

  4. getche() 函数放入循环中,当您遇到“(”或“<”时,将变量设置为 false。

  5. 如果您遇到结束括号(我的意思是')'或'>')设置该变量为真。

  6. 在应用程序结束时检查变量状态。如果为真,则表示没有遇到错误,否则用户有错误。

终于给大家举个例子了

示例:

typedef int boolean; /* Just ignore it. Just know it declares boolean type. */ boolean brastate, angbrackstate; char ch = getche(); while(ch != EOF) { if( ch == '<') { angbrackstate = false; ... /* Do the remaining yourself as you like challenges!!! */

祝你好运!