2017-02-21 75 views
1

我正在處理一個程序,我的「數據庫」是一些.csv文件。C++中的數據處理

我有一個.csv中的對象的列表,每個對象都有一些信息。這是處理「數據」的最佳方式。

  • 與fstream的工作,這意味着每次我想要修改的數據,或者我想讀的東西,我會直接與我的檔案工作與fstream的
  • 的工具,或者說,在節目的開始我將加載矢量中的數據,讀取,寫入矢量,並在程序結束時刪除以前的文件並加載新的文件。

在表現方面會有所不同嗎?考慮到物體很多。

+1

當你按照你的第二種方法並且在程序執行期間文件被修改時會發生什麼?除了這兩種方法之間的明顯差異之外,即使是在性能影響方面,也沒有足夠的背景知識。 – mpiatek

+1

打開,讀入緩存並關閉文件。定期將緩存寫入文件,如果它已被修改。絕對寫出口。你甚至不需要刪除舊文件。只需打開文件並在其上寫下。 – user4581301

+0

我認爲我的觀點很明確。由fstream我的意思是輸入/輸出流類 –

回答

2

我認爲它更像是一種組合而不是選擇A或B.特別是只選擇A.不安全,因爲多個組件可以同時訪問該文件。另外如果有很多更新,那麼每次使用流可能會讓你的代碼非常慢。

因此,我相信你應該使用B,但也照顧實施,以安全的方式保存數據(將數據寫入文件中)。

關於數據結構,這取決於使用情況。這裏要問的一個重要問題是是否有很多插入和刪除操作。如果是這種情況,那麼使用list而不是矢量會更有效,因爲該列表提供即時時間插入,並且vector不適合於此目的。

如果數據包含唯一屬性並且需要快速查找,那麼散列或地圖會更合適。

0

從我的CSVtoC實用程序中獲取CSV分析器。

http://www.malcolmmclean.site11.com/www/

CSV文件是不利於動態更新的記錄不是固定在已知的磁盤的物理位置。 (另一種方法是設計CSV,以使其不起作用,但這是一種微妙而雜亂的方法)。

讀取CSV很困難,寫一個很簡單。