読者です 読者をやめる 読者になる 読者になる

web上のsjisテキストを読み込むサンプル

bool DownloadSJISText(CString aUrl,long maxsize,std::string& sOut) {
	const int	BUF_LEN=1024;
	BYTE		lpBuff[BUF_LEN];

	sOut = "";

	// 接続を張って、リモートのファイルにアクセスできるようにする
	CInternetSession cSec(NULL, 1, INTERNET_OPEN_TYPE_PRECONFIG, NULL,NULL,0 );// # Use IE Settings
	CStdioFile* remoteFile = cSec.OpenURL(aUrl, 1, INTERNET_FLAG_TRANSFER_BINARY|INTERNET_FLAG_RELOAD, NULL, 0);
	if(remoteFile == NULL) return false;

	//long filesize = maxsize;
	std::unique_ptr<BYTE[]> Buff(new BYTE[maxsize]);

	// ローカルファイルを開いて、ダウンロード開始
	long totalsize = 0;
	for(;;){
		int n = remoteFile->Read(lpBuff, BUF_LEN);

		memcpy_s(Buff.get()+totalsize,maxsize,lpBuff,n);
		
		if(n > BUF_LEN) break;
		if(!n) break;
		totalsize = totalsize + n;
	}

	char* lptbuff;
	lptbuff = (char*)Buff.get();
	CStringA str;
	str = lptbuff;
	sOut = str;

	// 後処理
	delete	remoteFile;
	return true;
}