我真的遇到了一个数据类型转换的问题。
我正在用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* '的无效转换
谁有任何线索如何解决这个问题?
您的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);