텍스트 파일에서 그래프 인접 정보를 읽으려고 하면 다음으로 끝나는 다양한 정수 개수의 줄이 나타날 수 있습니다. '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 중국어 웹사이트의 기타 관련 기사를 참조하세요!