有人可以幫我弄清楚這個C++代碼是幹什麼的,但我想知道它在什麼地方。我已經想出了一些,但有些東西我無法得到我的頭。那就是:在C++中讀取的文件
vector<double> prices; // vector of option prices
vector<int> strikes; // vector of strikes
char buffer[100]; // buffer for line read
char dataBuffer[100]; // stores current data string read
char *str = NULL; // pointer to data string
const char *file = "optionData.txt"; // file with option chain info
ifstream fin; // input file stream
fin.clear();
fin.open(file);
if (fin.good())
{
while (!fin.eof()){
// read in one line at a time
fin.getline(buffer,sizeof(buffer)/sizeof(buffer[0]));
ifstream str1(buffer);
// Get data
str1 >> dataBuffer; // read data from file
while (!str1.eof()){
// read in contract maturity, strike, and price
str1 >> dataBuffer; // read option maturity month
str1 >> dataBuffer; // read option maturity year
str1 >> dataBuffer; /read option maturity strike
// convert strike char* data to integers
// and add to strike vector
strikes.push_back(atoi(dataBuffer));
str1 >> dataBuffer; // read option market price
// convert option price char* data to floats
// and add to strike vector
prices.push_back(atof(dataBuffer));
}
buffer[strlen(buffer) + 1] = '\0';
}
}
else
{
cout << "File not good!" << "\n";
}
// close file
fin.close();
什麼,我不明白是以下
ifstream str1(buffer);
fin.getline(buffer,sizeof(buffer)/sizeof(buffer[0]));
特別sizeof(buffer)/sizeof(buffer[0])
buffer[strlen(buffer) + 1] = '\0';
str1 >> dataBuffer;
的文件中讀取是「optionData.txt」和它的一個樣本:
Jan 03 35.00 40.50 Jan 03 95.00 0.30
Jan 03 40.00 25.30 Jan 03 100.00 0.20
Jan 03 45.00 29.50 Jan 03 105.00 0.05
Jan 03 50.00 16.80 Jan 03 110.00 0.10
Jan 03 55.00 12.60 Jan 03 115.00 0.15
Jan 03 60.00 9.30 Jan 03 120.00 0.15
Jan 03 65.00 6.40 Jan 03 125.00 0.10
Jan 03 70.00 4.10 Jan 03 130.00 0.10
Jan 03 75.00 2.60 Jan 03 140.00 0.10
Jan 03 80.00 1.50 Jan 03 150.00 0.05
Jan 03 85.00 0.90 Jan 03 155.00 0.00
Jan 03 90.00 0.50 Jan 03 160.00 0.05
請耐心等待我,我自學C++。我跑了它,但它凍結了我的機器。
如果您要教導自己的C++,一定要得到自己[一個很好的初學者的C++的書(http://stackoverflow.com/questions/ 388242 /對,最終-C-書指南和列表)。你沒有得到的C++代碼行很基礎。 – 2010-10-07 22:29:37
也許我應該改說,並說我沒有看到需要,我已經看到了比這更簡單的例子在書 – Vaolter 2010-10-07 22:34:45
作爲簡單的例子做,並停止調用eof()所有的時間。 ;-)而是檢查流轉換運算符的布爾值。例如。 'if(str1 >> dataBuffer)'... – 2010-10-07 22:41:29