截断的 If 语句 C++(将字母转换为数字)

Truncated If Statement C++ (Turning letters to numbers)

本文关键字:转换 数字 If 语句 C++      更新时间:2023-10-16

我正在尝试将一系列字母更改为带有C++的数字,并从制作此代码开始。

但是,计算 digit1 变量的数学似乎永远不会被执行。

有什么想法吗?

#include <iostream>
#include <string>
using namespace std;
int main()
{
    int qtyofnumbers, num, digit1, counter;
    char letters, upperlower;
    cout << "Enter a letter: ";
    cin >> letters;
    for (counter = 0; counter < 8; counter++)
    {
        if (counter == 3)
            cout << "-";
        num = static_cast<int>(letters) - static_cast<int>('A');
        if (0 <= num && num < 26)
            digit1 = (num / 3) + 2;
        if (((num / 3 == 6 ) || (num / 3 == 7)) && (num % 3 == 0))
            digit1 = digit1-1;
        if (digit1 > 9)
            digit1 = 9;    
        cin >> letters;
    }
    cout << digit1;
    return 0;
} 

我的猜测是问题出在您的输入中。您输入的是大写字母还是小写字母?它们的 ASCII 代码不同。因此,您可能希望将代码从

num= static_cast<int>(letters)-static_cast<int>('A');

到类似的东西

if (num >= 'a')
    num = letters - 'a';
else
    num = letters - 'A';

另外,正如@jtbandes所提到的,使用大括号{}。空格不能确定C++的范围。即使它只针对 if 语句后面的一行代码,将来也会为您省去麻烦。

静态强制转换是必要的吗?我建议使用字符串流,或者只是使用 .at() 逐个字符遍历字符串并依靠 ascii 值进行转换。http://web.cs.mun.ca/~michael/c/ascii-table.html。