簡體   English   中英

讀取各種尺寸的txt文件作為k-means算法程序的輸入

[英]Reading txt files with various dimensions as input for k-means algorithm program

我正在嘗試開發將讀取文本文件的C ++ k-means程序。 問題在於文本文件不是統一的。

例如,data1.txt看起來像

0.1  
3.0  
0.7  
0.5  
0.2  
1.5  
1.6  

和data3.txt看起來像

33 37 53
35 36 52
34 37 53
35 37 51
34 38 52
33 38 51
33 39 52
33 37 52
34 37 52
34 39 52

我想我應該以某種方式將數據存儲在向量中。 在不強迫用戶告訴程序文本文件中每個條目有多少尺寸的情況下,開發此功能的最佳方法是什么? 我希望用戶像這樣調用程序

program data_.txt #

其中data_.txt =任何文本文件,#=簇數

您可以使用boost :: split()函數(或此方法 )來獲取每一行中的條目數。 然后,如果您現在有多少個條目,您還將知道要處理多少個維度。 這也使您可以實現簡單的輸入驗證(文件中恆定的列數)。

stringstream也有一個很好的方法,它允許按任何空格分割。 您可以使用以下內容:

#include <sstream>
#include <vector>
#include <iterator>

template<typename T>
std::vector<T> split(const std::string& line) {
  std::istringstream is(line);
  return std::vector<T>(std::istream_iterator<T>(is), std::istream_iterator<T>());
}

用法:

std::string line = "1.2 3.4 5.6e7";
std::vector<double> vec = split<double>(line);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM