这就是我想要做的,这几乎不是我正在制作的整个程序的一小部分。这部分正在计算我输入的单词数。
string s;
getline(cin, s);
for (unsigned int i = 0; i < s.length(); i++)
{
if (s[i] == ' ' || s[i] == '.')
{
numWords++;
}
}
如果有人在末尾输入一个正确的行,这显然有效。不过,我想不出如何让它识别行尾字符,以防他们不加句号。
这就是我想要做的,这几乎不是我正在制作的整个程序的一小部分。这部分正在计算我输入的单词数。
string s;
getline(cin, s);
for (unsigned int i = 0; i < s.length(); i++)
{
if (s[i] == ' ' || s[i] == '.')
{
numWords++;
}
}
如果有人在末尾输入一个正确的行,这显然有效。不过,我想不出如何让它识别行尾字符,以防他们不加句号。
为什么不直接从 1 开始 numWords 计数器并只计算空格?
您可以简单地计算行中“”的数量并将其添加到1
. 就这样。
bool previousSpace = false;
for (unsigned int i = 0; i < s.length(); i++)
{
if (isspace(s[i]) || s[i] == '.')
{
if (previousSpace == false)
{
numWords++;
previousSpace = true;
}
}
else
{
previousSpace = false;
}
}
cout << numWords + (previousSpace ? 0 : 1) << endl;
这考虑了多个连续的空格。这里的关键是使用isspace
函数。
这可能和你所追求的一样吗?计算每个单词在文件中出现的次数,或者这已经在 C++ 中重复了一个单词计数程序吗?