一个 char - int ASCII 值转换器 [关闭]

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

我尝试制作一个 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[(,),-,_,...]";
    }

}

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

c++ if-statement integer char ascii
2个回答
0
投票

如果您想显示字符的“ASCII”值,请使用

static_cast
例如

#include <iostream>

int main()
{
    char character{'A'};
    
    std::cout << static_cast<unsigned int>(character) << "\n";

    return 0;
}

在线演示:https://onlinegdb.com/5XVADQ7qU


-1
投票

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
为您提供变量本身的大小(基本上,它需要多少内存),无论该变量中存储 什么,它都是相同的。

© www.soinside.com 2019 - 2024. All rights reserved.