……void CTitleDisExtension::Default(CHttpServerContext* pCtxt, LPTSTR pstrbarid, LPTSTR pstrtbarid, LPTSTR pstrencode)
{
StartContent(pCtxt);
WriteTitle(pCtxt);
char encode = this->SelectEncode(pstrencode);
*pCtxt << _T("encode:");
*pCtxt << _T(&encode); EndContent(pCtxt);
}……char CTitleDisExtension::SelectEncode(LPTSTR pstrencode)
{
char res = '1';
char* encode1 = pstrencode;
CString encode;
encode.Format("%s", encode1);
if(encode == "gb"){
res = '1';
}else if(encode == "big5"){
res = '2';
}else if(encode == "english"){
res = '3';
} return res;
}输出结果:
<html><head><title>Default MFC Web Server Extension</title></head><body>encode:1烫烫烫烫巴?烫烫磅?/body></html>结果是正确的,但后面的哪串乱码是怎么来的?
请高手指点!

解决方案 »

  1.   

    void CTitleDisExtension::Default(CHttpServerContext* pCtxt, LPTSTR pstrbarid, LPTSTR pstrtbarid, LPTSTR pstrencode)
    {
    StartContent(pCtxt);
    WriteTitle(pCtxt);
    char encode = this->SelectEncode(pstrencode);
    *pCtxt << _T("encode:");
    *pCtxt << (int)encode; EndContent(pCtxt);
    }
      

  2.   

    或者void CTitleDisExtension::Default(CHttpServerContext* pCtxt, LPTSTR pstrbarid, LPTSTR pstrtbarid, LPTSTR pstrencode)
    {
    StartContent(pCtxt);
    WriteTitle(pCtxt);
    LPCTSTR encode = (LPCTSTR)this->SelectEncode(pstrencode);
    *pCtxt << _T("encode:");
    *pCtxt << encode; EndContent(pCtxt);
    }LPTSTR CTitleDisExtension::SelectEncode(LPTSTR pstrencode)
    {
    TCHAR res1[] = _T("1");
    TCHAR res2[] = _T("2");
    TCHAR res3[] = _T("3");
    LPTSTR res res1;
    LPTSTR encode1 = pstrencode;
    CString encode;
    encode.Format("%s", encode1);
    if(encode == "gb"){
    res = res1;
    }else if(encode == "big5"){
    res = res2;
    }else if(encode == "english"){
    res = res3;
    } return res;
    }
      

  3.   

    *pCtxt << _T(&encode);
    你的意思大概只想输出一个字符吧,但输出的时候,会把从这个字符的位置起到第一个空字符中间的字符全部输出。*pCtxt << 输出一个以空字符结束的一个串。
    ============================
    结果是正确的,但后面的哪串乱码是怎么来的?
      

  4.   

    先在这里谢谢您但您的第一种方法出现: error C2593: “operator <<”不明确
    第二种方法仍然会出现乱码?
      

  5.   

    *pCtxt <<好像只支持char*
    后面的乱码估计是没有了结束符号'\0'
    你都用CString就好了。
      

  6.   

    void CTitleDisExtension::Default(CHttpServerContext* pCtxt, LPTSTR pstrbarid, LPTSTR pstrtbarid, LPTSTR pstrencode)
    {
    StartContent(pCtxt);
    WriteTitle(pCtxt);
    long int encode = this->SelectEncode(pstrencode);
    *pCtxt << _T("encode:");
    *pCtxt << encode; EndContent(pCtxt);
    }long int CTitleDisExtension::SelectEncode(LPTSTR pstrencode)
    {
    long int res = 0;
    LPTSTR encode1 = pstrencode;
    CString encode;
    encode.Format("%s", encode1);
    if(encode == "gb"){
    res = 1;
    }else if(encode == "big5"){
    res = 2;
    }else if(encode == "english"){
    res = 3;
    } return res;
    }
      

  7.   

    多谢各位大哥了小弟还想问一句:这CHttpServerContext* pCtxt到底可以输出哪几种数据类型的东西啊?
    (重载了operator <<几种数据类型?)
      

  8.   

    CHttpServerContext& operator<<(
       LPCTSTR psz 
    );
    CHttpServerContext& operator<<(
       long int dw 
    );
    CHttpServerContext& operator<<(
       short int w 
    );
    CHttpServerContext& operator<<(
       const CHtmlStream& stream 
    );
    CHttpServerContext& operator<<(
       double d 
    );
    CHttpServerContext& operator<<(
       float f 
    );
    CHttpServerContext& operator<<(
       const CLongBinary& blob 
    );
    CHttpServerContext& operator<<(
       const CByteArray& array 
    );
      

  9.   

    ms-help://MS.VSCC/MS.MSDNVS/vclib/html/_mfc_chttpservercontext.3a3a.operator_.3c3c.htm