如何使用相同的变量输入字母和数字? (C++)
How to input letters and numbers using the same variable? (C++)
我需要一些关于我正在尝试制作的十六进制计算器的帮助。十六进制计算需要能够读取字母和数字。那么,如何在仍然能够读取数字的同时读取字母并将数值分配给字母表呢?我需要能够读取值 0-9 并为字母 A-F 分配值 10-15。
你可以使用字符串
string s = "cb10"
关于如何使用,你可以
s[0] = 'a' //s = "ab10"
s[1] = '3' //s = "a310"
int i = s[1] - '0' //change char to int, i = 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 会出现错误
- 我没有运行这个。可能有更多错误。
好吧,我已经使用这段代码一段时间了,它运行得很好。谢谢大家
#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;
}
}
我需要一些关于我正在尝试制作的十六进制计算器的帮助。十六进制计算需要能够读取字母和数字。那么,如何在仍然能够读取数字的同时读取字母并将数值分配给字母表呢?我需要能够读取值 0-9 并为字母 A-F 分配值 10-15。
你可以使用字符串
string s = "cb10"
关于如何使用,你可以
s[0] = 'a' //s = "ab10"
s[1] = '3' //s = "a310"
int i = s[1] - '0' //change char to int, i = 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 会出现错误
- 我没有运行这个。可能有更多错误。
好吧,我已经使用这段代码一段时间了,它运行得很好。谢谢大家
#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;
}
}