使用C++程序獲取新浪行情數(shù)據(jù)的方法
在日常開發(fā)中我們經(jīng)常會使用到行情數(shù)據(jù),很多的時候我們根據(jù)一個基準數(shù)據(jù)區(qū)構造行情,但是隨著時間的推移然來構造的數(shù)據(jù)與真實行情數(shù)據(jù)之間的差距越來越大。
本問以AG1309為例子來說明,如何使用C++程序來獲取新浪行情數(shù)據(jù)。(說明如果合約過期獲取的數(shù)據(jù)將未空,此時請更換合約信息)。
好了,在這里就不再將廢話,直接給出源碼供大家學習!
// HttpDataTest.cpp : 定義控制臺應用程序的入口點。
#include "stdafx.h" #include #include #include #include #include #include #define MAXSIZE 1024 #pragma comment(lib, "Wininet.lib") void urlopen(_TCHAR*); std::string GetSubBtFind(char* lpsz); int Token(const char* pSep, char* pStr, std::vector& refvec); int _tmain(int argc, _TCHAR* argv[]) { urlopen(_T("http://hq.sinajs.cn/list=AG1309")); system("pause"); return 0; } void urlopen(_TCHAR* url) { HINTERNET hSession = InternetOpen(_T("UrlTest"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if(hSession != NULL) { HINTERNET hHttp = InternetOpenUrl(hSession, url, NULL, 0, INTERNET_FLAG_DONT_CACHE, 0); if (hHttp != NULL) { wprintf_s(_T("%s\n"), url); char Temp[MAXSIZE]; ULONG Number = 1; while (Number > 0) { InternetReadFile(hHttp, Temp, MAXSIZE - 1, &Number); Temp[Number] = '\0'; std::string str= GetSubBtFind(Temp); ; char szpstr[1024]; strcpy(szpstr, str.c_str()); std::vector vec; Token(",", szpstr, vec); printf("%s\n", Temp); for(int i=0; i { printf("%s\n", vec[i]); } } InternetCloseHandle(hHttp); hHttp = NULL; } InternetCloseHandle(hSession); hSession = NULL; } } std::string GetSubBtFind(char* lpsz) { std::string scrStr=lpsz; std::string str_temp=""; int len=strlen(lpsz); int beginPos=scrStr.find("\""); scrStr=scrStr.substr(beginPos+1,len); int endPos=scrStr.find("\""); str_temp=scrStr.substr(0,endPos); return str_temp; } int Token(const char* pSep, char* pStr, std::vector& refvec) { for(char* outer = strtok(pStr, pSep) ; NULL != outer; outer = strtok(NULL, pSep)) { refvec.push_back(outer); } return 0; }
上述代碼在vs2008下運行結果如下:
以上就是本文的全部內(nèi)容,希望對大家熟練應用C++程序抓取數(shù)據(jù)有所幫助
相關文章
C++ 關于 CMFCPropertyGridCtrl 的使用方法
這篇文章主要介紹了C++ 關于 CMFCPropertyGridCtrl 的使用方法的相關資料,需要的朋友可以參考下2015-06-06