我有了數百萬行的txt文件,每行有3輛彩車,我讀它使用下面的代碼:C++中的流類型,如何從IstringStream讀取?
ifstream file(path)
float x,y,z;
while(!file.eof())
file >> x >> y >> z;
和我的作品完美。
現在我想嘗試使用Boost映射文件做同樣的事情,所以我下面
string filename = "C:\\myfile.txt";
file_mapping mapping(filename.c_str(), read_only);
mapped_region mapped_rgn(mapping, read_only);
char* const mmaped_data = static_cast<char*>(mapped_rgn.get_address());
streamsize const mmap_size = mapped_rgn.get_size();
istringstream s;
s.rdbuf()->pubsetbuf(mmaped_data, mmap_size);
while(!s.eof())
mystream >> x >> y >> z;
它編譯沒有任何問題,但不幸的是在X,Y,Z並沒有得到實際的浮點數,但只是垃圾,經過一次迭代後,結束。
我可能做一些可怕的錯誤
我如何使用和分析數據的內存映射文件裏面? 我搜索了整個互聯網,尤其是堆棧溢出,找不到任何例子。
我使用的是Windows 7 64位。
由於您使用升壓已經,爲什麼不把它簡單,使用[mapped_file_source](http://www.boost.org/ doc/libs/release/libs/iostreams/doc/classes/mapped_file.html#mapped_file_source)從boost.iostreams? (同時,'while(!file.eof())'在任何情況下都是錯誤的) – Cubbi
我很興奮,應該如何使用它,以及如何解析使用它的浮點數? – OopsUser