使用C ifstream 從文字檔案讀取整數
在下列情況下,從文字檔案中擷取圖鄰接資訊並將其儲存到向量中會帶來挑戰:處理可變整數計數的行。這是使用 C 的 ifstream 的全面解決方案:
傳統方法包括使用 getline() 讀取每一行並使用輸入字串流來解析該行。這種技巧對於整數數量一致的行非常有效。
<code class="cpp">#include <fstream> #include <sstream> #include <vector> std::ifstream infile("text_file.txt"); std::string line; while (std::getline(infile, line)) { std::istringstream iss(line); int n; std::vector<int> v; while (iss >> n) { v.push_back(n); } // Process the vector v }</code>
但是,如果您的行具有不同的整數計數,則有一個利用循環和“stay”慣用法的單行解決方案,由Luc Danton 提供:
<code class="cpp">#include <sstream> #include <iterator> #include <vector> int main() { std::vector<std::vector<int>> vv; for (std::string line; std::getline(std::cin, line); vv.push_back(std::vector<int>(std::istream_iterator<int>(std::move(std::istringstream(line))), std::istream_iterator<int>())) ); // Process the vector of vectors vv }</code>
在此片段中,「stay」習慣用法確保提供的左值引用在移動後仍然有效。為了提高效率,這一移動是必要的,因為它避免了不必要的字元複製。
這些解決方案提供了高效且通用的方法,用於從文字檔案中提取整數並將其儲存在向量中,無論行是否具有一致或一致不同數量的整數。
以上是如何使用 C ifstream 高效地從具有不同整數計數的文字檔案中讀取整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!