...... char* content1;
char* content2; varcontent_intro=m_pRs->GetCollect("content_introduction"); char* content2=(char*)varcontent_intro; memcpy(content1,content2,100); *pCtxt <<content1; //输出
上面的代码能通过,但是输出时却总是出错,不知道为什么,请高手帮忙看一下...谢谢!
char* content2; varcontent_intro=m_pRs->GetCollect("content_introduction"); char* content2=(char*)varcontent_intro; memcpy(content1,content2,100); *pCtxt <<content1; //输出
上面的代码能通过,但是输出时却总是出错,不知道为什么,请高手帮忙看一下...谢谢!
char* content2=(char*)(CW2A)(LPWSTR)varcontent_intro;
char* content2; varcontent_intro=m_pRs->GetCollect("content_introduction"); char* content2=(char*)varcontent_intro; //换成char* content2=varcontent_intro;同样不行 memcpy(content1,content2,100); *pCtxt < <content1; //输出 宽字符该怎么转换呢?二楼大哥的char* content2=(char*)(CW2A)(LPWSTR)varcontent_intro; 不行啊~~
应当没有问题是不是其他问题?
在 char* content2=(char*)varcontent_intro; 处断点,单步执行后看看content2的内容
http://blog.csdn.net/zgl7903/archive/2008/06/11/2536463.aspx
content1的内存有分配吗?
content2 = new char[strlen(content2)]; // 分配内存,C++语言的用法用完后记得释放哦
果然高手...佩服!通过了
但是我遇到一个问题char* content1;
content1=new char[200];
char* content2; for(int i=1;((i<=m_pRs->PageSize)&&(!m_pRs->EndOfFile));i++)
{
varcontent_intro=m_pRs->GetCollect("content_introduction"); content2=new char[strlen(varcontent_intro)];char* content2=(char*)varcontent_intro; memcpy(content1,content2,100); *pCtxt < <content1; //输出
}//这里是个循环体,content2每次循环都要进行内存分配和释放吗?delete content1;....
memcpy(content1,content2,100); 不要这样用,因为content2长度不确定
可以这样
int len=strlen(content2);
content1=new char[len+1];
strcpy(content1,content2);
...
delete [] content1;在不修改varcontent_intro的情况下
直接使用content2可以的了
没必要再用content1来过渡
应该这样
for(int i=1;((i <=m_pRs->PageSize)&&(!m_pRs->EndOfFile));i++)
{
varcontent_intro=m_pRs->GetCollect("content_introduction");char* content2=(char*)varcontent_intro;char* content1=new char[strlen(content2) + 1];strcpy(content1,content2);
delete [] content1;*pCtxt << content1; // *pCtxt???
}
....或者就
for(int i=1;((i <=m_pRs->PageSize)&&(!m_pRs->EndOfFile));i++)
{
varcontent_intro=m_pRs->GetCollect("content_introduction");// _bstr_t的char*重载操作,已经分配新的内存并返回首地址
// 在析构时自动销毁的
char* content2=(char*)varcontent_intro;*pCtxt << content2; // 输出
}
....
USES_CONVERSION;
varcontent_intro=m_pRs->GetCollect("content_introduction");
char* content2=W2A(varcontent_intro);
//memcpy(content1,content2,100); 多此一举,没意义的代码,content1和content2的内容不是一样吗,直接输出content2不就可以了吗,如果你真的要这么做,你也要给content1分配内存
*pCtxt < <content2; //输出
有个问题
char* content1;
char* content2;
只是定义了两个指针,你有没有分配空间?如果没有,肯定出错.可能先分配content1的空间,char content1[100];
char* content2;