【问题标题】:c++ characters to numbers both capital and lower charactersc ++字符到数字大写和小写字符
【发布时间】:2020-03-01 13:04:34
【问题描述】:

我正在用 C++ 建立一个战舰程序,我遇到了一个指定船上坐标的难题。我想使用指定给董事会特定区域的大写和小写字符。 F.exs A2、H4 或 a2、h4 等。我已尝试在主代码之外实现此功能以进行适当检查和调试。

std::char c;
int x=0;
std::cout<<"Test letters to numbers using char(): "; std::cin>>c;
x=char(c);
if(x>=65||x<97){//should i do && or ||? //If statement works in Capital letters A is 0 etc.
    x=x-65;   
}if(x>=97){//does not work
    x=x-97;
}

std::cout<<"letter: "<<c<<"\tNumber: "<<x<<endl;

此代码以大写字母显示。但不是针对显示 a= 32 的小写字母。

运行此代码时没有显示任何错误。有什么建议吗?

【问题讨论】:

  • 为什么不先包含&lt;cctype&gt; 并首先转换所有tolower()?然后你可以忽略用户输入信息的情况。(另外,不要使用 magic-numbers,当你的意思是 'a''A' 当你的意思是 'A' 时使用 'a'而不是9765)
  • 将尝试使用
  • 好的,这行得通,谢谢,我应该分享结果吗?
  • 字符串中使用的字符集是实现定义的,大写或小写的概念取决于系统本地化设置(例如,俄罗斯用户的小写/大写字母集将不同于那些在英国)。您假设一个 ASCII(或兼容的)字符集,这是不保证的。相反,使用&lt;cctype&gt; 函数,如islower()isupper()(检测大小写)或tolower()toupper() 来更改字母的大小写。
  • @Peter 我认为它实际上是 ANSI 而不是 ASCII,但我可能错了。

标签: c++ char int


【解决方案1】:
    char c;
    int x=0;
    std::cout<<"Test letters to numbers using char(): "; std::cin>>c;
    x=tolower(char(c));//include cctype
    if(x>=97)
    {
        x=x-97;
    }
    std::cout<<"letter: "<<c<<"\tNumber: "<<x<<endl;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2019-11-22
    相关资源
    最近更新 更多