我需要帮助将值与某些字符串相关联,以便在用户输入后计算平均值。 所以我尝试使用string :: find,因为值是顺序的; 我最终得到了这段代码:
string str1, str2, str3, str4, str5;
string::size_type position;
float media;
str1 = "NSMBE";
cout << str1.find("N") +1 << endl;
cout << str1.find("M") + 1 << endl;
cout << str1.find("M") + 1 << endl;
cout << str1.find("B") + 1 << endl;
cout << str1.find("E") + 1 << endl;
但是现在我如何从这里获取用户输入并使字符串等于每个值? 示例:用户输入等级1的N和等级2的M;所以N = 1且M = 2,所以我得到的平均值是(1 + 2)/ 2。 ..
我确定它真的很简单易行,但我到处搜索才能找到答案,而且无法做到。
答案 0 :(得分:0)
如果您尝试将字符串(或字符)与值相关联,则应使用关联容器,例如std::map
。我不确定我是否理解你的问题,但这里可能会让你开始。
#include <iostream>
#include <map>
using namespace std;
int main(int argc, char *argv[]) {
string str1, str2, str3, str4, str5;
str1 = "NSMBE";
map<char, int> values;
cout << "Enter a letter: ";
for (char key; cin >> key; cout << "Enter a letter: ")
{
int val;
cout << "enter a value: ";
cin >> val;
values[key] = val;
}
int sum = 0;
for (char c : str1)
{
cout << "key = " << c << endl;
sum += values[c];
}
cout << endl;
cout << sum << endl;
cout << "Value of the string: " << double(sum)/double(str1.size()) << endl;
}