嘗試從文字檔案中讀取圖鄰接資訊時,可能會遇到以不同數量的整數結尾的行'n'。由於整數數量不一致,使用 getline() 方法單獨檢索每一行為準確解析每一行帶來了挑戰。人們正在尋求解決這個問題的策略,並將這些值有效地儲存在向量中。
傳統方法要求迭代 getline() 讀取的每一行,並利用 istringstream 物件來解析每一行。當順序讀取整數時,它們可以附加到向量中,然後可以根據需要進一步操作該向量。以下程式碼舉例說明了這種方法:
<code class="cpp">#include <fstream> #include <sstream> #include <string> #include <vector> int main() { std::ifstream infile("thefile.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); } // Do something with v } }</code>
另一個解決方案涉及單行 for 迴圈。透過利用 istream_iterator 類,我們可以將值直接讀取到向量中,從而減少對中間容器的需求。也使用了輔助函數來防止 std::move 可能出現的潛在懸空參考。
<code class="cpp">#include <fstream> #include <string> #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::stay(std::istringstream(line))), std::istream_iterator<int>()) ) ) { } }</code>
以上是如何在 C 中有效地將具有不同計數的文字檔案中的整數解析為向量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!