读书人

调用类中函数用cout输出字符出现乱

发布时间: 2012-03-31 13:13:26 作者: rapoo

调用类中函数,用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;


}

int main()
{
char_set* pset = new char_set( "hello! ");

char ch;
pset-> get_char(3, &ch);

cout < < ch < < endl;

delete pset;

return 0;
}

读书人网 >C++

热点推荐