我真的遇到了数据类型转换的问题。
我正在用GTK制作程序的GUI版本。要获取entry_text字符串,我需要const char*
,这迫使我在下面的函数中使用此数据类型。
我想将其转换为string(char[])
,编译器会在下面给出错误:
错误来源的源代码:
//....
char ret (const char *bd){
char c[100];
strcpy(c,bd);
return *c;
}
char encode(const char ebuf[],const char epass[]) {
char *buf=ret(ebuf);
char *pass=ret(epass);
//...
当我编译代码时,我得到以下错误(使用g ++):
codgui.cpp:在函数'char encode(const char *,const char *)'中:
codgui.cpp:36:错误:从'char'到'char *'的转换无效 codgui.cpp:37:错误:从'char'无效转换为'char *'
任何人都有任何关于如何解决这个问题的线索?
答案 0 :(得分:1)
您的ret
函数仅返回局部变量c
中的第一个字符。您希望返回char*
,并且永远不应该返回局部变量的地址,因此您需要在堆上创建它。
char* ret (const char *bd){
char *c = new char[100];
strcpy(c,bd);
return c;
}
char encode(const char ebuf[],const char epass[]) {
char *buf=ret(ebuf);
char *pass=ret(epass);