【问题标题】:Input type casting?输入类型转换?
【发布时间】:2018-01-19 15:02:29
【问题描述】:

我想获取一个输入字符,然后从中获取一个预定义的数字,该数字分配给该字符。 示例

int A=100;
char in;
cin>>in; //input A;

然后使用该in 字符来识别A 并传递它所持有的值。

对不起,如果我不是那么清楚。

【问题讨论】:

  • 所以你想把map从某个字符转成A中存储的值?
  • 使用scanf( "%c", &in );getc 会得到必要的东西。

标签: c++ casting char int


【解决方案1】:

您的输入是一个字符,因此您也可以将其与其他字符进行比较

char input;
std::cin >> input; //input A;
std::cout << "input: " << input << std::endl;
if (input == 'A')
{
    std::cout << "input was A: " << std::endl;
}
else
{
    std::cout << "input was not: " << std::endl;
}

【讨论】:

  • 谢谢大家,我会尝试使用 MAP 库,看看我在哪里可以使用它。欣赏它,
  • 好一个!请考虑接受最能提供帮助的答案
【解决方案2】:

简单示例

#include <iostream>
#include <unordered_map>

int main(void)
{
    char c;

    std::unordered_map<char, int> uMap;

    for (int i = 'A'; i <= 'Z'; i++)
    {
        uMap[i] = i - 'A' + 1;
    }

    c = fgetc(stdin);

    std::cout << "\nCharacter '" << c << "' has value " << uMap[c];

    return 0;
}

输入

1. A
2. C
3. Z

输出

1. Character 'A' has value 100
2. Character 'C' has value 102
3. Character 'Z' has value 125

【讨论】:

    【解决方案3】:

    正如对您的问题的评论中提到的,您希望使用map

    #include <map>
    ...
    std::map<char, int> char_map = {
        {'A', 100}   
    };
    
    char in;
    std::cin >> in; //input A;
    
    std::cout << char_map[in] << std::endl;
    

    当然,您可能需要在密钥上添加某种形式的验证。

    【讨论】:

    • 想知道,如果需要,我可以添加稍后分配的值吗?说:A+B。
    猜你喜欢
    • 2022-08-08
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多