我想用C++写一个函数,计算字符串中的所有字符#
我有一个名为 input 的字符串,程序的用户可以在其中输入一个句子,
我将重要的字母存储在字符串字母表中,如下所示:
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
but getline(cin, input);
是对的。