我寫了一個簡單的程序來抓住雅虎財經的股票價格。讀取數據的循環提前截斷(並停止網站數據顯示的位置,而不是完整下載到excell文件的正確日期)。所以我在循環中加入了一個cout命令來嘗試調試,並且它正確地工作!Cout修復了C++程序中的錯誤,但是爲什麼?
那麼爲什麼使用cout函數改變程序功能呢?有任何想法嗎?以下是代碼。 (我發現了兩個相關的職位,但仍然無法數字出來,比如「可以清點以某種方式改變變量?」和「C++程序奇怪的錯誤:刪除打印輸出打破計劃」)
#include <string>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <windows.h>
#include <wininet.h>
using namespace std;
int main()
{
HINTERNET hOpen, hURL;
LPCWSTR NameProgram = L"Webreader"; // LPCWSTR == Long Pointer to Const Wide String
LPCWSTR Website;
char file[101];
int i;
string filename;
unsigned long read;
filename = "data.txt";
ofstream myFile(filename);
if (! myFile)
{
cout < "Error opening file\n";
}
if (!(hOpen = InternetOpen(NameProgram, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0)))
{
cerr << "Error in opening internet" << endl;
return 0;
}
Website = L"http://ichart.finance.yahoo.com/table.csv?s=MSFT&a=00&b=1&c=2009&d=09&e=22&f=2010&g=d&ignore=.csv";
hURL = InternetOpenUrl(hOpen, Website, NULL, 0, 0, 0); //Need to open the URL
InternetReadFile(hURL, file, 100, &read);
file[read] = '\0';
myFile << file;
while (read == 100)
{
InternetReadFile(hURL, file, 100, &read);
file[read] = '\0';
myFile << file;
cout << file; //If I take this line out, the function terminates early.
}
myFile << file;
InternetCloseHandle(hURL);
myFile.close();
return 0;
}
你確定這正是你的代碼? 'cout <「Error ...」'看起來很可疑... – 2010-10-22 02:49:50
你是對的,這是一個錯誤,但它在我的程序中(我不知道它爲什麼編譯),所以我只是將它改爲<<並仍然得到同樣的問題,cout解決了另一個問題。 (感謝您注意!) – 2010-10-22 02:53:57
編碼提示:您可以通過使用do-while而不是常規while來將初始讀取合併到循環中。 – chrisaycock 2010-10-22 02:58:35