自定义功能转换错误?

时间:2018-05-12 03:36:03

标签: c++

我在实现转换功能方面遇到了麻烦。

zj_X函数中我想将字符串作为参数传递给函数并将其转换为char[]类型用于转换十六进制,但似乎运行调试后获得的结果似乎不是很好。

这是IDE向我报告的错误:

H:\ CPP \ tst_jz \ main.cpp | 11 |错误:未在此范围内声明'q1'|

我使用的IDE是代码块。

#include <iostream>
#include<cstdio>
#include<cstdlib>
#include<string>

using namespace std;
void zj_10(int i,int j);
void zj_x();

int main()
{
    zj_10(20,2);
    zj_x(q1,8);
    return 0;
}

void   zj_10(int i,int j)
{
    char num[100];
    cout<<"转换后的结果为:";
    itoa(i,num,j);
   cout<<num<<endl;
}

void zj_x(string str,int i)
{
    char buf[10];
    int  length = str.copy(buf, 9);
    buf[length] = '\0';
    char *p1;
    cout<<"转换的结果为:"<<strtol(buf,&p1,i);
}

2 个答案:

答案 0 :(得分:0)

这里的问题是你的main函数中没有名为q1的变量,但是你传递了它。这就是错误。因此,首先尝试声明和定义该变量,或者如果要将q1作为字符串传递,则发送"q1"而不仅仅是q1

答案 1 :(得分:0)

如果q1是字符串文字,则将其括在DOUBLE引号中,如&#34; q1&#34;。

aravind_reddy告诉你使用单引号:

  

如果您想将q1作为字符串传递,请发送&#39; q1&#39;而不仅仅是q1

但这些仅用于字符文字,例如&#39; a&#39;,&#39; 1&#39;等。 字符串文字必须用双引号括起来。

如果q1是字符串变量的名称,那么显然需要声明它。