gpt4 book ai didi

c++ - 检查十六进制前缀后将字符串转换为 int 的更简洁方法?

转载 作者:行者123 更新时间:2023-11-30 04:10:25 24 4
gpt4 key购买 nike

这个小练习旨在从用户那里获取一个字符串,该字符串可以是十进制、十六进制或八进制。 1st 我需要确定字符串是哪种数字。第二,我需要将该数字转换为 int 并以正确的格式显示该数字,例如:

cout <<(dec,hex,oct, etc)<< number;

这是我想出的。我想要一种更简单、更清晰的方式来编写它。

string number = "";
cin >> number;
string prefix = "dec";
char zero = '0';
char hex_prefix = 'x';
string temp = "";
int value = 0;

for(int i =0; i<number.size();++i)
{
if(number[0] == zero)//must be octal or hex
{
if (number[0] == zero && number[1] == hex_prefix ) //is hex
{
prefix = "hex";
for(int i = 0; i < (number.size() - 2); ++i)
{
temp[i] = number[i+2];

}
value = atoi(temp.c_str());
}
//... code continues to deal with octal and decimal

最佳答案

您正在检查 number[0] 两次,这是第一个最明显的问题。

内部 if 已经检查了 number[0]number[1],我看不到外部的意义一个。

最外层的循环也很难理解,你希望数字之前是非十六进制数据,还是什么?关于预期输入字符串的外观,您的问题可能会更清楚。

我认为最干净的方法是忽略它,并将其推送到现有(库)代码中,该代码可以解析任何基数中的整数。在 C 中,我会推荐 strtoul(),您当然也可以在 C++ 中使用它。

关于c++ - 检查十六进制前缀后将字符串转换为 int 的更简洁方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20639587/

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