用输入中给出的单词填充一个字符串

时间:2014-03-01 16:20:21

标签: c++ string iterator char

输入:

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> >()’
        }
        }

非常感谢提前。

2 个答案:

答案 0 :(得分:1)

具体请参阅代码中的错误评论:

在你的for循环中,你正在使用const_iterator,然后你取消引用迭代器并分配给它,你不允许这样做,因为它是const

使用string::iterator重试。

答案 1 :(得分:0)

将一行读入字符串,就像现在一样。但是然后使用std::istringstream来标记输入。使用std::unordered_map将单词存储为键,将计数存储为数据。