我正在搜索文本文件並在標題之後提取數據。但是,我有一些迭代器問題,我不知道如何克服。查找並提取文本文件中的數據
這是一個示例文本文件:
Relay States 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
理想情況下,我想打電話LoadData<bool> something.LoadData("Relay States");
並讓它與{0,0,0,0返回的std ::向量, 0,0,0,0,...}。
template<typename T> std::vector<T> CProfile::LoadData(const std::string& name)
{
std::ifstream ifs(FILE_NAME);
std::vector<T> data;
std::istreambuf_iterator<char> iit = std::istreambuf_iterator<char>(ifs);
std::search(iit, ifs.eof(), name.begin(), name.end());
std::advance(iit, name.size() + 1);
T buffer = 0;
for(ifs.seekg(iit); ifs.peek() != '\n' && !ifs.eof(); data.push_back(ifs))
{
ifs >> buffer;
data.push_back(buffer);
}
return data;
}
據我所知,我的代碼的主要問題是:
- 的std ::搜索是一個曖昧的電話,我將如何去解決這個?
- ifs.seekg(iit)不合法,我將如何着手使iit成爲一個有效的參數?
感謝。
是頭部和數據始終在單獨的行?數據是否與您所示樣本中的單獨行有關?數據量總是一樣的,或者你如何跟蹤它的數量? – 2012-02-22 07:48:48
如果數據來自二維數組,則與上述完全相同。要計算下載量,我必須在標題名稱和「\ n \ n」之間閱讀。數據後,總是有兩個\ n。 – 2012-02-22 09:12:43