打印网页问题的内容

时间:2012-06-01 13:58:14

标签: c++ visual-c++ mfc

我不知道我的代码有什么问题,但它确实没有打印到stdout,尽管调试器中显示了一些内容。

#include "stdafx.h"
#include <afx.h>
#include <afxinet.h>

#include <iostream>
#include <list>
#include <string>
#include <vector>
#include "wininet.h"

using namespace std;



void DisplayPage(LPCTSTR pszURL)
{
   CInternetSession session(_T("Mozilla/5.0"));
   CStdioFile* pFile = NULL;
   pFile = session.OpenURL(pszURL);
   CString str = _T("");


   while ( pFile->ReadString(str) )
   {
       wcout << str.GetString() << endl;  // <-- here I expect some output, get nothing
                                            //     not even newline !
   }

   delete pFile;
   session.Close();
}


// --- MAIN ---
int _tmain(int argc, _TCHAR* argv[])
{
    DisplayPage( _T("http://www.google.com") );

    cout << "done !" << endl;
    cin.get();

    return 0;
}

这是一个控制台项目。弹出控制台窗口,显示消息“done!”

1 个答案:

答案 0 :(得分:0)

如果有人对此问题感兴趣,则是因为从尝试写入默认控制台的网页收到的非OEM字符引起的(期望OEM字符,翻译模式)。在第一个非OEM角色std :: wcout停止处理。 将控制台设置为二进制模式,或者在发送到标准输出之前将接收到的字符串转换为适当的编码

#include <fcntl.h>
#include <io.h>

...
int old_transmode = _setmode(_fileno(stdout), _O_U16TEXT);
std::wcout << str.GetString() << std::endl;    // print wide string characters
...
_set_mode(_fileno(stdout), old_transmode);    // restore original console output mode