Вот код, над которым я работаю. Он получает количество слов из строки, но сейчас я пытался применить ту же логику, используя карты, но не смог, так как карты не могут принимать значение ключа во время выполнения. Как я могу хранить каждое слово в ключе из строки в разных ключах каждый раз, чтобы я мог получить фактическое количество слов. Любая идея, как я могу это сделать?
#include<iostream>
#include<conio.h>
#include<string>
using namespace std;
int main()
{
map<string, int> stringCounts;
map<string, int>::iterator iter;
string words;
int TOTAL = 0;
char a[1000];
cout << "enter the string = ";
cin.getline(a, 1000);
int Totalwords = 0;
int no = 0;
for (int i = 0; a[i] != '\0'; i++)
{
if ((int(a[i]) >= 65 && int(a[i]) <= 90) || (int(a[i]) >= 97 && int(a[i]) <= 122))
{
}
else
{
Totalwords++;
}
no = i;
}
TOTAL = Totalwords;
cout << "number of words = " << TOTAL << endl;
string *words = new string[TOTAL];
for (int i = 0, j = 0; j < TOTAL, i <= no;)
{
if ((int(a[i]) >= 65 && int(a[i]) <= 90) || (int(a[i]) >= 97 && int(a[i]) <= 122))
{
words[j] = words[j] + a[i];
stringCounts[words[j]]++;
for (iter = stringCounts.begin(); iter != stringCounts.end(); iter++)
{
cout << "word: " << iter->first << ", count: " << iter->second <<
endl;
}
i++;
}
else
{
j++;
i++;
}
}
_getch();
}