+ -
当前位置:首页 → 问答吧 → CHttpFile乱码。。

CHttpFile乱码。。

时间:2011-12-18

来源:互联网

vs2010 unicode环境。。

下面这段代码乱码啊。。

C/C++ code
#include "iostream"
#define _AFXDLL
#define UNICODE
#define _UNICODE
#include "string"
#include "afx.h"
#include "afxinet.h"
using namespace std;

string Unicode2Ansi(wchar_t* wstr) {
    int len = WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,wstr,-1,NULL,0,NULL,NULL);
    char* tmps = new char[len];
    WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK,wstr,-1,tmps,len,NULL,NULL);
    string ss = tmps;
    delete [] tmps;
    return ss;
}

int main() {
    CInternetSession sess(_TEXT(""));
    CHttpFile* file = (CHttpFile*)sess.OpenURL(_TEXT("http://www.baidu.com"));
    CString str;
    while (file->ReadString(str)) {
    
        cout << Unicode2Ansi(str.GetBuffer()) << endl;
    }
    file->Close();
    cin.get();
    return 0;
}


我那么 转换编码不对吗? 应该怎么转换呢?我知道可以用ReadString的另一个重载达到 目的 ,但是我想知道怎么利用
WideCharToMutliByte函数来实现 。。

作者: esslzy   发布时间: 2011-12-18

C/C++ code
cout << Unicode2Ansi(str.GetBuffer()) << endl;

CString::GetBuffer函数参数不能为空,编译能通过?

作者: fight_in_dl   发布时间: 2011-12-18

引用 1 楼 fight_in_dl 的回复:
C/C++ code

cout << Unicode2Ansi(str.GetBuffer()) << endl;

CString::GetBuffer函数参数不能为空,编译能通过?


MSDN:
C/C++ code

PXSTR GetBuffer(
   int nMinBufferLength
);
PXSTR GetBuffer();

作者: esslzy   发布时间: 2011-12-18

顶啊。。。

作者: esslzy   发布时间: 2011-12-18