调用类中函数,用cout输出字符,出现乱码。附有代码,大家来看看啊该如何处理
调用类中函数,用cout输出字符,出现乱码。附有代码,大家来看看啊!
代码如下:
class char_set
{
.....
int char_set::get_char(int pos, char* pchar);
.....
};
int char_set::get_char(int pos, char* pchar)
{
*pchar = data[pos-1];
return 1;
}
void main()
{
char_set* pset = new char_set( "hello! ");
char ch;
pset-> get_char(3, &ch);
cout < < ch < < endl;
delete pset;
}
输出的竟然是个“笑脸”,是哪里有问题啊?
------解决方案--------------------
int char_set::get_char(int pos, char* pchar);
> > > int get_char(int pos, char* pchar);
------解决方案--------------------
贴全代码
------解决方案--------------------
*pchar = data[pos-1];
char_set 的完整定义是如何的?
至少给出 构造函数 ~
------解决方案--------------------
检查 char_set* pset = new char_set( "hello! ");
构造的对象是否正确 ~
------解决方案--------------------
class char_set
{
.....
char data[100];
.....
char_set(char *a)
{
strcpy(data, a)
}
...
};
试试这个.
------解决方案--------------------
#include <stdio.h>
#include <iostream>
using namespace std;
class char_set
{
char data[100];
public:
char_set(const char* str)
{
strcpy(data, str);
}
int char_set::get_char(int pos, char& pchar);
};
int char_set::get_char(int pos, char& pchar)//这里修改了
{
pchar = data[pos-1];
return 1;
}
int main()
{
char_set* pset = new char_set( "hello! ");
char ch;
pset-> get_char(3, ch);
cout < < ch < < endl;
delete pset;
return 0;
}
LZ我修改成这样...你看看
------解决方案--------------------
= =上面修改成那样是贪好看..引用比指针清楚多了,...我LS的那个应该是你程序的问题所在把,猜的..
------解决方案--------------------
构造函数写对了就没问题吧
------解决方案--------------------
笑脸 是1的ascii码
------解决方案--------------------
不知道什么问题,这里贴上我的代码
#include <stdio.h>
#include <iostream>
using namespace std;
class char_set
{
char *data;
public:
char_set(const char* str)
{
int len = strlen(str);
data = new char[len+1];
strcpy(data,str);
}
int char_set::get_char(int pos, char* pchar);
~char_set()
{
delete[] data;
}
};
int char_set::get_char(int pos, char* pchar)//这里修改了
{
*pchar = data[pos-1];
return 1;
代码如下:
class char_set
{
.....
int char_set::get_char(int pos, char* pchar);
.....
};
int char_set::get_char(int pos, char* pchar)
{
*pchar = data[pos-1];
return 1;
}
void main()
{
char_set* pset = new char_set( "hello! ");
char ch;
pset-> get_char(3, &ch);
cout < < ch < < endl;
delete pset;
}
输出的竟然是个“笑脸”,是哪里有问题啊?
------解决方案--------------------
int char_set::get_char(int pos, char* pchar);
> > > int get_char(int pos, char* pchar);
------解决方案--------------------
贴全代码
------解决方案--------------------
*pchar = data[pos-1];
char_set 的完整定义是如何的?
至少给出 构造函数 ~
------解决方案--------------------
检查 char_set* pset = new char_set( "hello! ");
构造的对象是否正确 ~
------解决方案--------------------
class char_set
{
.....
char data[100];
.....
char_set(char *a)
{
strcpy(data, a)
}
...
};
试试这个.
------解决方案--------------------
#include <stdio.h>
#include <iostream>
using namespace std;
class char_set
{
char data[100];
public:
char_set(const char* str)
{
strcpy(data, str);
}
int char_set::get_char(int pos, char& pchar);
};
int char_set::get_char(int pos, char& pchar)//这里修改了
{
pchar = data[pos-1];
return 1;
}
int main()
{
char_set* pset = new char_set( "hello! ");
char ch;
pset-> get_char(3, ch);
cout < < ch < < endl;
delete pset;
return 0;
}
LZ我修改成这样...你看看
------解决方案--------------------
= =上面修改成那样是贪好看..引用比指针清楚多了,...我LS的那个应该是你程序的问题所在把,猜的..
------解决方案--------------------
构造函数写对了就没问题吧
------解决方案--------------------
笑脸 是1的ascii码
------解决方案--------------------
不知道什么问题,这里贴上我的代码
#include <stdio.h>
#include <iostream>
using namespace std;
class char_set
{
char *data;
public:
char_set(const char* str)
{
int len = strlen(str);
data = new char[len+1];
strcpy(data,str);
}
int char_set::get_char(int pos, char* pchar);
~char_set()
{
delete[] data;
}
};
int char_set::get_char(int pos, char* pchar)//这里修改了
{
*pchar = data[pos-1];
return 1;