需要计算特定单词的实例数

时间:2013-09-17 23:15:55

标签: c++

我有一个家庭作业问题需要一个程序来计算用户输入中特定单词的实例数。它只需要计算空格之间的单词。我想我们需要使用一个向量,并在每次出现“word”实例时添加它。然后在最后,使用v.size()来告诉向量的大小。这是我到目前为止,但它不会编译,我很确定它不对:

#include <iostream> 
#include <string>
#include <vector>
using namespace std;

int main()
{
  string word;
  vector<string> v;
  while (cin >> word)
  {
    if (v == "word")
    {
      v.push_back (word);
    }
  }
  cout << v.size();
  return 0;
}

3 个答案:

答案 0 :(得分:3)

  1. if(v == "word") - 您正在尝试将矢量v与“字”字符串进行比较。输入存储在word变量中。如果您要计算的单词是“单词”,那么它应该是if(word == "word")

  2. 你不需要push_back你的话 - 你完全清楚他们都是一样的,对吗?而是在每次遇到所需的单词时创建一个计数器变量并递增它。

  3. 这些想法应该让你开始。

答案 1 :(得分:1)

v ==“word”对我没有意义。 v是一个向量,对吗?如果是这样,v ==“word”将字符串向量与字符串进行比较,这不起作用。

我个人建议使用地图或字典。 这是关于c ++地图的文档。惊人的数据结构0.0

http://en.cppreference.com/w/cpp/container/map

我在大学时做过类似运动的方式是这样的:

//Pseudocode activate
Map<string, int> my_map = new Map();
String word;
while(there is input){
    my_map.at(word)++;
}

for all entries in my_map{
    print my_map keys: my_map values
}

答案 2 :(得分:0)

如果你只需要计算“单词”的数量,你可以使用类似的东西:

int count = -1;
do
{
cout << "Word: ";
cin >> word;
count++;
system("cls");
}while(condition)
printf("Result:%d", cout);

和计数得到条件数== true