如何使用相同的变量输入字母和数字? (C ++)

时间:2016-12-10 09:31:06

标签: c++ variables hex calculator

我正在尝试制作一个十六进制计算器。十六进制计算需要能够读取字母和数字。那么如何在能够读取数字的同时读取并为字母分配数值呢?我需要能够读取值0-9并将字母A-F赋值为10-15。

3 个答案:

答案 0 :(得分:3)

您可以使用std::hex输入十六进制值。

例如:

int my_value;
std::cin >> std::hex >> my_value;

它也适用于std::cout

std::cout << std::hex << my_value;

请注意,my_value默认仍被视为十进制。

来源: Getting hex through Cin

或者你可以这样做:

std::string input;
std::cin >> input;
int hex = 0;
for(unsigned int i = 0; i < input.length; ++i)
{
    int temp = 0;
    if(input[i] >= '0' && input[i] <= '9')
        temp = (input[i] - '0');
    else if(input[i] >= 'a' && input[i] <= 'f')
        temp = (input[i] - 'a');
    else if(input[i] >= 'A' && input[i] <= 'F')
        temp = (input[i] - 'A');
    temp += i * 16;

    hex =+ temp;
}

几点说明:

  • 这使用ASCII char算术。这有点难以理解。
  • 这会将char转换为int,可能会导致某些系统出现问题
  • 如果向左侧添加0,则会出现错误
  • 我没有跑这个。可能更多的错误。

答案 1 :(得分:0)

你可以使用字符串

string s = "cb10"

关于如何使用,你可以

s[0] = 'a' //s = "ab10"
s[1] = '3' //s = "a310"
int i = s[1] - '0' //change char to int, i = 3

答案 2 :(得分:0)

好吧,我现在已经使用这段代码了一段时间,并且它一直运行良好。谢谢大家。

#include <iostream>
#include <string>

using namespace std;
int main ()
{
int conv;

cout <<"Please enter appropriate command for conversion;" << endl;
cout <<"1. Hexadecimal to Denary." << endl;
cout <<"2. Denary to Hexadecimal." << endl;

cin >> conv;

if (conv == 1)
{
    int xvar;

    cout <<"Please enter the number in hexadecimal." << endl;

    std::cin >> std::hex >> xvar;

    std::cout << std::hex << xvar << endl;
    std::cout << std::dec << xvar << endl;
}

if (conv == 2)
{
    int yvar;

    cout <<"Please enter the number in denary." << endl;

    std::cin >> std::dec >> yvar;

    std::cout << std::dec << yvar << endl;
    std::cout << std::hex << yvar << endl;

}   
}