我正在尝试创建一个将输入单词转换为数字的函数,例如移动小键盘。这是一个任务。我不能使用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";
}
}
}
}
如果我理解此权利,您正在尝试将字符映射到其他字符并打印它们。您说您不能使用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];
。