0

这就是我想要做的,这几乎不是我正在制作的整个程序的一小部分。这部分正在计算我输入的单词数。

string s;
getline(cin, s);

for (unsigned int i = 0; i < s.length(); i++)
{
    if (s[i] == ' ' || s[i] == '.')
    {
        numWords++;
    }
}

如果有人在末尾输入一个正确的行,这显然有效。不过,我想不出如何让它识别行尾字符,以防他们不加句号。

4

4 回答 4

0

为什么不直接从 1 开始 numWords 计数器并只计算空格?

于 2013-09-16T23:13:54.910 回答
0

您可以简单地计算行中“”的数量并将其添加到1. 就这样。

于 2013-09-16T23:33:59.287 回答
0
  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函数。

于 2013-09-17T00:35:04.550 回答
-1

这可能和你所追求的一样吗?计算每个单词在文件中出现的次数,或者这已经在 C++ 中重复了一个单词计数程序吗?

于 2013-09-16T23:31:00.907 回答