c++ 如何在Mac上不按回车键输入字符?[重复]

u5rb5r59  于 2023-04-08  发布在  Mac
关注(0)|答案(1)|浏览(138)

此问题已在此处有答案

Capture characters from standard input without waiting for enter to be pressed(21个回答)
5天前关闭。
我有一个程序可以告诉你一个段落中的字符和元音的数量。
下面是代码

#include <iostream>
using namespace std;

int main()
{
    cout<<"Enter your paragraph\nTo finish press 'ESC'\n\n";
    
    //27 Is The ESC Button In ASCII
    char s[500];
    cin.getline(s, 500, 27);
    
    //Vowel and Character counters
    long long vowels = 0, characters = 0;
    
    for(int i = 0; i<500; i++) s[i] = tolower(s[i]);

    for(int i = 0; i<500; i++) {
        if(s[i] == 'a'||s[i] == 'e'||s[i] == 'i'||s[i] == 'o'||s[i] == 'u'||s[i] == 'y')vowels++;
        if(s[i] >= 32 && s[i] <= 126) characters++;
    }
    cout<<"The amount of characters: "<<characters<<"\nThe amount of vowels: "<<vowels<<'\n';
}

如何使用户按下ESC时,立即输出**(Mac上)
当用户按下
ESC时,它应该打印段落中的字符数和元音数,但当用户按下ESC**时,实际上必须按enter才能输出。

px9o7tmv

px9o7tmv1#

除非按Esc键是你作业的一部分,这是不寻常的,否则我建议你简单地按照一个非常常见的标准来构造:

  • 段落以两个换行符结尾

读取字符,直到用户按下一个换行符,紧接着又按下另一个换行符。然后,您的提示将变得非常简单:

std::cout << "Type your paragraph. Press 'Enter' twice to finish:\n\n";

否则,你应该按照链接的帖子在Linux系统上操作“原始”与“熟”输入。

相关问题