我尝试制作一个 ASCII 值转换器 - 如果输入是 int :返回 char ASCII 值 |如果输入是 char :返回 int ASCII 值 - 在 C++ 中使用 if 语句,但我对声明输入变量有点困惑。这是主要问题。
我尝试使用 typeid().name() ,然后使用 typeid() ,最后我使用 sizeof() 函数, 这是我尝试过的
#include<iostream>
int main()
{
char character;
std::cout << "Insert Your Characater: ";
std::cin >> character;
if (sizeof(character) == 1)
{
std::cout << "Your Character Refers to : " << int(character);
}
else if (sizeof(character) == 4)
{
std::cout << "\nYour Character Refers to :" << char(character);
}
else {
std::cout << "\nSomething Went Wrong ... Enter a Number[1,2,3,.....] or an Alphapet[A,a,B,b,C,c,.....] or a Character[(,),-,_,...]";
}
}
有什么建议来完成这件事吗?
如果您想显示字符的“ASCII”值,请使用
static_cast
例如
#include <iostream>
int main()
{
char character{'A'};
std::cout << static_cast<unsigned int>(character) << "\n";
return 0;
}
std::cin
是char
的流(大多数时候,它是单字节字符)。如果您想从标准输入接受多字节字符,C++ 为您提供了 std::wcin
。这将为您提供 wchar_t
流,但编码取决于操作系统。在 Linux 上,wchar_t
通常 4 个字节;在 Windows 上,它通常 2 个字节; “默认情况下”输入流的编码更加依赖于操作系统和实现。
如果你有一个
wchar_t
变量包含UTF编码的符号,检查它是否是ASCII符号很容易:
wchar_t sym;
std::wcin >> sym;
if((sym & 0xffffff80) == 0) { //higher bits are 0
std::wcout << L"ASCII symbol: code " << (int)sym << L", symbol '" << sym << L"'\n";
} else {
std::wcout << L"Non-ASCII symbol: code " << (int)sym << L", symbol '" << sym << L"'\n";
}
sizeof
为您提供变量本身的大小(基本上,它需要多少内存),无论该变量中存储 什么,它都是相同的。