gpt4 book ai didi

c++ - 获取输入字符串,将其转换为其十六进制值,然后将其十六进制存储为 int

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:01 25 4
gpt4 key购买 nike

所以我正在尝试制作一个程序,向用户询问行星,它存储为一个字符串。我想使用 switch 语句来做出决定(比如如果是地球就这样做,如果是火星就这样做)。我知道 switch 语句只接受整数,所以我把字符串转换成它的十六进制值。我遇到的问题是如何将十六进制值保存为 int。

我知道做一堆嵌套的 if 语句会更容易,但我发现那真的很丑陋和笨重。

这是我目前所拥有的:

/*
* Have user input their weight and a planet
* then output how heavy they would be on that planet
* if planet is wrong
* output it
*/

#include <iostream>
#include <string>
#include <sstream>

using namespace std;

string returnanswer(string x) {
string dat = x;
int test;
ostringstream os;

for (int i = 0; i < dat.length(); i++)
os << hex << uppercase << (int) dat[i];

string hexdat = os.str();

cout << "Text: " << dat << endl;;
cout << "Hex: " << hexdat << endl;

return hexdat;
}

int main() {
int weight;
string planet;

cout << "Please enter your weight: " << endl;
cin >> weight;
cout << "Please enter Planet" << endl;
cin >> planet;

returnanswer(planet);
return 0;
}

最佳答案

将十六进制字符串转换为 int 的一种方法(使用 C++ convert hex string to signed integer 的建议)是这样的:

unsigned int num;
stringstream ss;
ss << hex << hexdat;
ss >> num;

num现在将包含 hexdat 的 int 值.


附带说明一下,您应该考虑使用 unordered_map,而不是将行星名称转换为十六进制然后再转换为字符串。 (正如其他人所建议的那样),例如 unordered_map<string, Enum>将用户输入的行星名称映射到枚举值。 Enum 行星看起来像这样:

enum Planet {mercury, venus, earth, mars, jupiter, saturn, uranus, neptune};

关于c++ - 获取输入字符串,将其转换为其十六进制值,然后将其十六进制存储为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com