输入:
Today I eat bread. Today I eat cookies.
输出
eat: 2
I: 2
Today: 2
bread: 1
cookies: 1
我必须创建一个程序来计算输入中单词出现的次数。然后,如果某些单词之间的次数相等,那么我将按字母顺序显示它们。到现在为止我做到了这一点:
#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int countt (string text);
int main () {
string text;
while (getline(cin,text)) //Receive the input here
countt(text); //Send the input to countt
return 0;
}
int countt (string text) {
int i,j;
string aux; //I make a string aux to put the word to compare here
for (std::string::const_iterator i = text.begin(); *i != ' '; i++){
for (std::string::const_iterator j = aux.begin(); j != text.end(); j++)
*j=*i; //But here an error is given: 25:9: error: assignment of read-only location ‘j.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator*<const char*, std::basic_string<char> >()’
}
}
非常感谢提前。
答案 0 :(得分:1)
具体请参阅代码中的错误评论:
在你的for
循环中,你正在使用const_iterator
,然后你取消引用迭代器并分配给它,你不允许这样做,因为它是const
。
使用string::iterator
重试。
答案 1 :(得分:0)
将一行读入字符串,就像现在一样。但是然后使用std::istringstream
来标记输入。使用std::unordered_map
将单词存储为键,将计数存储为数据。