0
訪問mapped_region數據時遇到一些麻煩。從boost映射區域訪問數據時出錯
首先,我定義了一個結構:(股票報價...)
struct bar{
double open,high,low,close;
size_t volume;
bar(double _open, double _high, double _low, double _close): open(_open),high(_high), close(_close), volume(_volume){}};
這裏是sample.txt的(我也嘗試二進制格式)文件,我想通過迭代訪問使用以下代碼直板型
89.26 89.47 89.25 89.47 563
89.47 89.56 89.27 89.47 284
89.46 89.56 89.26 89.33 264
,我可以由字符讀出的字符:
file_mapping m_file(filename,read_only);
mapped_region region(m_file,read_only);
char const* add= static_cast<char*> (region.get_address());
即,用於第第一個數據,我會得到8 9。 2 6,逐字符使用add [i]。這可能是很糟糕的工作量。 所以我想轉換:
bar* myaddr=(bar*)(region.get_address()), where bar is define as the above..
,這樣我可以有機會獲得數據使用:
myaddr->open (with an offset).
例如,現在我想訪問在第二行第3號,我只需要:
(myaddr+1)->high
然而,結果真的連線:
e.g 1.50656e-189, or sometimes 825303072 for (myaddr+2)->volume
事實上,如果我轉換爲字符以外的任何時間,就不會有這樣的錯誤......
問:我如何可以通過使用myaddr-訪問映射數據>沒有錯誤?
謝謝
因此,從文本文件映射是不正確的?你建議的格式是什麼,我試過.mat。 .bin沒有這些工作 – user3217264
@ user3217264:你是否理解包含PI值和文本字符串「3.1415」的「double」之間的區別?如果沒有,我不能幫你。 –