c++ - 控制台应用程序自动退出 C++

标签 c++ console-application

我正在制作一个非常简单的程序,只是想作为初学者学习 C++。它旨在简单地计算短句中元音的数量和辅音的数量。我在做的过程中遇到了一个有趣的小困境。

首先是代码:

    #include <iostream>
    #include <time.h>
    #include <string>


    using namespace std;



    int main()
   {    int vowells = 0, consenants = 0;
char sentence[100];
char alphabet[] = {'a','e','i','o','u','b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'};
cout << "Please type in a sentence (up to 100 characters max, lower case only): ";

cin >> sentence;
cin.ignore();

cout << "Your sentence was: " << sentence;

for (int i=0; i < sizeof(sentence); i++)
{
    if (sentence[i] == alphabet[0]||sentence[i] == alphabet[1]||sentence[i] == alphabet[2]||sentence[i] == alphabet[3]||sentence[i] == alphabet[4])
    {vowells++;}
    else if (sentence[i] == alphabet[5]||sentence[i] == alphabet[6]||sentence[i] == alphabet[7]||sentence[i] == alphabet[8]||sentence[i] == alphabet[9]||sentence[i] == alphabet[10]||sentence[i] == alphabet[11]||
        sentence[i] == alphabet[12]||sentence[i] == alphabet[13]||sentence[i] == alphabet[14]||sentence[i] == alphabet[15]||sentence[i] == alphabet[16]||sentence[i] == alphabet[17]||sentence[i] == alphabet[18]||
        sentence[19] == alphabet[20]||sentence[i] == alphabet[21]||sentence[i] == alphabet[22]||sentence[23] == alphabet[24]||sentence[i] == alphabet[25])
    {consenants++;}
}

cout << "\nThe number of vowells is: " << vowells;
cout << "\nThe number of consenants is: " << consenants;

cin.get();


    }

抱歉,它看起来真的很乱。基本上在cin>>语句之后;我在一行中放置了 cin.ignore() 函数来删除输入句子后按下的回车键。在函数的末尾,cin.get() 只是假设用作断点,以便程序在关闭前需要另一个输入。如果我只输入 1 个没有空格的单词,程序会根据需要运行并在最后暂停。如果我用空格输入多个单词,它会立即运行并立即关闭,甚至没有给我时间看它。我认为这是由于某些原因造成的空间......虽然我不确定他们为什么会以这种方式影响它。

所以基本上,是空间给我带来了问题吗?如果是这样,我该如何摆脱它们或至少让程序忽略它们?

谢谢!

编辑*** 所以我被告知我可以使用 Windows Sleep() 命令让它暂停,这很有效。现在的问题是,正如另一个人评论的那样,cin 函数只接受第一个单词,而没有考虑句子的其余部分。所以我想我需要摆脱空间或以某种方式使用不同的输入功能来让它正常工作。关于如何进行此操作的任何建议?

最佳答案

据我所知,在 C++ 中没有标准的、跨平台的“休眠”方式。如果您运行的是 Windows,则可以使用以下内容:

#include <windows.h>
int main(){
    //do stuff
    Sleep(1000); // this will "sleep" for 1s (1000ms)
}

如果您不使用 Windows,我相信也有 Linux/etc 的替代品可以做类似的事情。我以前见过你用过的方法,但如果它不起作用,这应该是一个不错的选择。你可以使用 threads , 例如。那行得通。

关于c++ - 控制台应用程序自动退出 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18062788/

相关文章:

C++ 怪物漫游功能

c++ - QSqlRecord 在查询中将具有默认值的列设置为空

c# - 如何使用 Visual Studio 2010 将 Windows 控制台应用程序 C# 项目更改为 Windows 服务?

asp.net-mvc - 控制台应用程序 CSHTML 智能感知和绑定(bind)?

c++ - 如何在 NUMA 机器上的不同节点上分配数组的一部分?

c++ - 动态嵌套循环 (C++)

c++ - 无需安装 Oracle 客户端或即时客户端的 Oracle C++ 连接

c++ - Linux 控制台操作函数

c# - 从 C# Web 服务调用或调用 C# 控制台应用程序?

windows-7 - 为什么控制台输出这么慢?