C++ 的 ASCII 转换器 [将 Char 转换为 int,反之亦然]

问题描述 投票:0回答:1

我尝试用 C++ 中的 if 语句制作一个 ASCII 转换器,但声明输入变量时我有点困惑。这是主要问题。

我尝试使用 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[(,),-,_,...]";
    }

}

有什么建议来完成这件事吗?

c++ if-statement integer char ascii
1个回答
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";
}
© www.soinside.com 2019 - 2024. All rights reserved.