Yahoo Finance から株価を取得する簡単なプログラムを作成しました。データを読み取るループは早期に切り捨てられました (そして、Excel ファイルの正しい日付への完全なダウンロードとは対照的に、Web サイトからのデータが表示される場所について終了しました)。それで、ループに cout コマンドを入れてデバッグを試みたところ、正しく動作しました!
では、なぜ cout 関数を使用するとプログラム関数が変更されるのでしょうか? 何か案は?以下はコードです。(関連する 2 つの投稿を見つけましたが、まだわかりません。たとえば、「どうにかして変数を変更できますか?」と「C++ プログラムの奇妙なエラー: Printout Breaks プログラムの削除」など)。
#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;
}