将字符串转换为数字的C ++程序

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

我正在尝试创建一个将输入单词转换为数字的函数,例如移动小键盘。这是一个任务。我不能使用cstring或字符数组。

有人可以识别并更正我的代码中的错误吗?当前显示错误:ISO C++ forbids comparison between pointer and integer [-fpermissive]

我没有使用任何指针变量。我确实使用过strlen()函数来确定字符在字符串中的确切位置。非常感谢您的帮助。

#include<iostream>
#include<conio.h>
#include<string.h>
#include<stdio.h>
using namespace std;

void Letter_correspondence();

int main()
{
    Letter_correspondence();
    return 0;
}

void Letter_correspondence()
{

    cout<<"Enter the letters of the word you want to convert to numbers: ";
    char a[]="Hello";
    char b[]="world";
    int len=strlen(a);
    int lenb=strlen(b);
    int n;
    int l=a[n];
    for (n=0;n<=7;n++)
    {
        while (n<=len)
        {
            if (l=="a"||l=="b"||l=="c")
            {
                if (n==2)
                {
                    cout<<"-";
                }
                cout<<"2";

            }
            else if (l=="d"||l=="e"||l=="f")
            {
                if (n==2)
                {
                    cout<<"-";
                }
                cout<<"3";
            }
            else if (l=="g"||l=="h"||l=="i")
            {
                if (n==2)
                {
                    cout<<"-";
                }
                cout<<"4";
            }
            else if (l=="j"||l=="k"||l=="l")
            {
                if (n==2)
                {
                    cout<<"-";
                }
                cout<<"5";
            }
            else if (l=="m"||l=="n"||l=="o")
            {
                if (n==2)
                {
                    cout<<"-";
                }
                cout<<"6";
            }
            else if (l=="p"||l=="q"||l=="r"||l=="s")
            {
                if (n==2)
                {
                    cout<<"-";
                }
                cout<<"7";
            }
            else if (l=="t"||l=="u"||l=="v")
            {
                if (n==2)
                {
                    cout<<"-";
                }
                cout<<"8";
            }
            else if (l=="w"||l=="x"||l=="y"||l=="z")
            {
                if (n==2)
                {
                    cout<<"-";
                }
                cout<<"9";
            }
        }
    }

}
c++
1个回答
0
投票

如果我理解此权利,您正在尝试将字符映射到其他字符并打印它们。您说您不能使用cstring或字符数组,但是您可以在此处进行此操作:

char a[]="Hello";
char b[]="world";

相反,我只用std::string

std::string a = "Hello";

然后您可以使用基于范围的for循环遍历它。打印字符串的最佳方法可能是使用switch语句:

for (char &c : a)
    {
        switch (tolower(c)) {
        case 'a':
        case 'b':
        case 'c':
            std::cout << 2;
            break;

        case 'd':
        case 'e':
        case 'f':
            std::cout << 3;
            break;

        case 'g':
        case 'h':
        case 'i':
            std::cout << 4;
            break;

        case 'j':
        case 'k':
        case 'l':
            std::cout << 5;
            break;

        case 'm':
        case 'n':
        case 'o':
            std::cout << 6;
            break;

        case 'p':
        case 'q':
        case 'r':
        case 's':
            std::cout << 7;
            break;

        case 't':
        case 'u':
        case 'v':
            std::cout << 8;
            break;

        case 'w':
        case 'x':
        case 'y':
        case 'z':
            std::cout << 9;
            break;

        default:
            std::cout << c;
        }
    }

如果您使用的是不支持基于范围的for循环的C ++老版本,请更改此选项

for (char &c : a)
    {
        switch (tolower(c)) {

为此

for (size_t i = 0; i < a.length(); i++)
    {
        switch (tolower(a[i])) {

以及std::cout << c;std::cout << a[i];

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