我正在制作一个非常简单的程序,只是想作为初学者学习 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 函数只接受第一个单词,而不考虑句子的其余部分。所以我想我需要去掉空格或者以某种方式使用不同的输入函数来让它正常工作。有关如何执行此操作的任何建议?