...... char* content1;
         char* content2;         varcontent_intro=m_pRs->GetCollect("content_introduction"); char* content2=(char*)varcontent_intro; memcpy(content1,content2,100);          *pCtxt <<content1;      //输出
上面的代码能通过,但是输出时却总是出错,不知道为什么,请高手帮忙看一下...谢谢!

解决方案 »

  1.   

    content_introduction 中的内容是不是字符串,还是宽字符串,宽字符串的话还要转换一下
    char* content2=(char*)(CW2A)(LPWSTR)varcontent_intro; 
      

  2.   

    char* content1似乎没分配地址?
      

  3.   

            char* content1; 
            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; 不行啊~~
      

  4.   

    char*是_bstr_t类的一个重载char* content2=(char*)varcontent_intro;
    应当没有问题是不是其他问题?
    在 char* content2=(char*)varcontent_intro; 处断点,单步执行后看看content2的内容
      

  5.   

    参考下我的博客文章 看看有没有帮助
    http://blog.csdn.net/zgl7903/archive/2008/06/11/2536463.aspx
      

  6.   


    content1的内存有分配吗?
      

  7.   

    content2 = (char*)malloc(strlen(content2));  // 分配内存,C语言的用法
    content2 = new char[strlen(content2)];  // 分配内存,C++语言的用法用完后记得释放哦
      

  8.   


    果然高手...佩服!通过了
    但是我遇到一个问题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;....
      

  9.   

    char* content1; 要分配空间
    memcpy(content1,content2,100); 不要这样用,因为content2长度不确定
    可以这样
    int len=strlen(content2);
    content1=new char[len+1];
    strcpy(content1,content2);
    ...
    delete [] content1;在不修改varcontent_intro的情况下
    直接使用content2可以的了
    没必要再用content1来过渡
      

  10.   


    应该这样
    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; // 输出
    }
    ....
      

  11.   

       char* 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;      //输出 
      

  12.   


    有个问题
    char* content1; 
    char* content2;
    只是定义了两个指针,你有没有分配空间?如果没有,肯定出错.可能先分配content1的空间,char  content1[100]; 
    char* content2;