如何根据用户输入在地图中添加某些值? 我试图用C++编写计算器,并希望得到与java相同的结果。在C++中,我怎么能从用户输入的值中打印出和的值,得到与java一样的最终结果呢?请注意我是C++初学者,请原谅我在这个问题上的无知。
我设法用Java做了一个。在java中,我可以输入多个单词,得到GEMARTIAL,并且我希望在C++中得到相同的结果。 Java代码如何根据用户输入在地图中添加某些值? 我试图用C++编写计算器,并希望得到与java相同的结果。在C++中,我怎么能从用户输入的值中打印出和的值,得到与java一样的最终结果呢?请注意我是C++初学者,请原谅我在这个问题上的无知。,c++,maps,C++,Maps,我设法用Java做了一个。在java中,我可以输入多个单词,得到GEMARTIAL,并且我希望在C++中得到相同的结果。 Java代码 package com.company; `import java.util.Hashtable;` `import java.util.Scanner;` public class English_Gematria { public static void main(String[] args) { Hashtable<String,
package com.company;
`import java.util.Hashtable;`
`import java.util.Scanner;`
public class English_Gematria {
public static void main(String[] args) {
Hashtable<String, Integer> Gematria_Values = new Hashtable<>();
Gematria_Values.put(" ", 0);
Gematria_Values.put("A", 1);
Gematria_Values.put("B", 2);
Gematria_Values.put("C", 3);
// Goes through rest of alphabet.
System.out.println("What do you want the gematria of?");
Scanner i = new Scanner(System.in);
String Gematria = i.nextline();
int sum = 0;
for (int j = 0; Gematria.length(); j++) {
sum += Gematria_Values.get(String.valueOf(Gematria.toUpperCase().charAt(j)));
}
System.out.println("The Gematria of " + Gematria + " is " + sum);
#include <iostream>
#include <cmath>
#include <map>
using namespace std;
int main() {
std::map<std::string, std::double_t> Gematria_Values;
Gematria_Values[" "] = 0;
Gematria_Values["A"] = 1;
Gematria_Values["B"] = 2;
Gematria_Values["C"] = 3;
// Goes through rest of alphabet.
std::string Gematria;
std::cout << "What do you want the gematria of?" << std::endl;
std::cin >> Gematria;
transform(Gematria.begin(), Gematria.end(), Gematria.begin(), ::toupper);
int sum = 0;
for (int i = 0; i < Gematria.length(); i++)
{
sum += Gematria_Values.at(Gematria);
}
std::cout << "The Gematria is " << sum;
return 0;
}
当用户输入为(不带引号)“b”或“b”时,我得到
但是,当用户输入为(不带引号)“ab”或“bb”时,我得到
我的问题是:如何获得与Java相同的最终结果?- 如果我理解您的问题,那么映射的键类型应该是
,而不是string。这同样适用于java版本char
- 看
- 我们不使用。老实说,直到现在我才听说过这件事。使用
double
- 默认情况下
- 可以使用初始值设定项列表简化标准容器的初始化(请参见代码)
The Gematria is 1.
The Gematria is 2.
terminate called after throwing an instance of 'std::out_of_range'
what(): map::at
int main()
{
std::unordered_map<char, double> Gematria_Values = {
{' ', 0},
{'A', 1},
{'B', 2},
{'C', 3}
};
std::string Gematria;
std::cout << "What do you want the gematria of?" << std::endl;
std::cin >> Gematria;
transform(Gematria.begin(), Gematria.end(), Gematria.begin(), ::toupper);
int sum = 0;
for (auto ch : Gematria)
sum += Gematria_Values[ch];
std::cout << "The Gematria is " << sum;
}
for (auto ch : Gematria)
{
auto found = Gematria_Values.find(ch);
if (found == Gematria_Values.end())
{
// deal with error
}
else
{
sum += found->second;
}
}