我整天都在努力,没有运气。它现在的夜晚,不知道该怎么办。我的任务是读取用户输入的句子中的元音数,空格数和其他字符数。我知道我需要将cin.get(ch)用于空格,但不知道如何使用。我还需要将句子输出到文件中。这是我到目前为止所拥有的:
//Get data from user
cout << "Enter your sentence on one line followed by a # to end it: " << endl;
while (cin >> noskipws >> character && character != '#')
{
character = static_cast<char>(toupper(character));
if (character == 'A' || character == 'E' || character == 'I' ||
character == 'O' || character == 'U')
{
vowelCount++;
isVowel = true;
}
if (isspace(character))
{
whiteSpace++;
}
else if (isVowel == true && isspace(character))
{
otherChars++;
}
outFile << character;
}
outFile << "vowelCount: " << vowelCount << endl;
outFile << "whiteSpace: " << whiteSpace << endl;
outFile << "otherchars: " << otherChars << endl;
答案 0 :(得分:3)
这一行
if (character == 'A' || 'E' || 'I' || 'O' || 'U');
没有做你的想法。它总会回归真实。
你需要
if (character == 'A' || character == 'E' || character == 'I' || character == 'O' || character =='U')
并在该行的末尾删除分号
答案 1 :(得分:0)
下面:
while (cin >> character && character != '#')
您正在跳过所有空白区域。为了防止运营商&gt;&gt;从滑动白色空间你需要使用noskipws修饰符明确指定它。
while(std::cin >> std::noskipws >> character && character != '#')
或者,使用get
可以实现相同的效果while(std::cin.get(character) && character != '#')
接下来,您正在读取循环条件之外的更多字符。
cin.get(character);
你已经在变量'character'中有了一个值。所以删除这两个。循环的下一次迭代(在while条件中)将获得下一个字符(因为它在输入循环之前执行)。
然后按照蒂姆指出的那样修好你的测试 然后,您可以使用以下命令为空白区域添加另一个测试:
if (std::isspace(character)) // Note #include <cctype>
{ /* STUFF */ }
答案 2 :(得分:0)
您可以完全相同的方式检查空白。常见的空白字符是空格(' '
)和水平制表符('\t'
)。不太常见的是换行符('\n'
),回车符('\r'
),换页符('\f'
)和垂直制表符('\v'
)。
您还可以使用isspace
中的ctype.h
。
答案 3 :(得分:0)
#include <iostream>
using namespace std;
int main()
{
char ch;
int vowel_count = 0;
int space_count = 0;
int other_count = 0;
cout << "Enter a string ends with #: " << endl;
while(1)
{
cin.get(ch);
if(ch == '#')
{
break;
}
if(ch == 'A' || ch == 'a'
|| ch == 'E' || ch == 'e'
|| ch == 'I' || ch == 'i'
|| ch == 'O' || ch == 'o'
|| ch == 'U' || ch == 'u')
{
++vowel_count;
}
else if(ch == ' ')
{
++space_count;
}
else
{
++other_count;
}
}
cout << "Vowels: " << vowel_count << endl;
cout << "White spaces: " << space_count << endl;
cout << "Other: " << other_count << endl;
return 0;
}
没有数组