我想用 C++ 编写一个函数,它计算字符串中的所有字符。# 我有一个称为输入的字符串,程序的用户可以在其中输入一个句子,重要的字母我存储在这样的字符串字母表中:
string alphabet {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
以及用于存储字母出现频率的向量,例如 A 位于位置 0,B 位于位置 0,以此类推。
vector<long> letterCount (26);
我已经编写了我认为应该可以工作的函数,并且它似乎能够找出字符的出现,但之后这个数字乘以字母在字母表中的位置。这是功能:
long countLetters(int& p) {
for(int i = 0; i < alphabet.size(); ++i) {
for(long j = 0; j < count(input.begin(), input.end(), alphabet.at(i)) {
countLetters.at(i)++;
}
}
return letterCount.at(p);
}
例如,如果输入是“HELLO”,程序会输出:
E : 5
H : 8
L : 24
O : 15
所以你看,例如字母'L'在字符串中包含两次,但'L'的结果是24,因为'L'在字母表中的第12位。
请帮忙,如果你意识到我的问题是什么。
编辑:我找到了一种有效的方法,至少部分有效:
long countLetters(int& p) {
for(size_t i = 0; i < input.length(); ++i) {
for(size_t j = 0; j < alphabet.length(); ++j) {
letterCount.at(j) = count(input.begin(), input.end(), alphabet.at(j));
}
}
return letterCount.at(p);
}
但是当输入两个或更多单词时,该函数只计算出第一个单词中出现的字母。如何分析更多单词?
编辑:之前我有cin >> input
但是getline(cin, input);
是对的。