> 백엔드 개발 > C++ > C ifstream을 사용하여 정수 개수가 다양한 텍스트 파일에서 정수를 효율적으로 읽는 방법은 무엇입니까?

C ifstream을 사용하여 정수 개수가 다양한 텍스트 파일에서 정수를 효율적으로 읽는 방법은 무엇입니까?

DDD
풀어 주다: 2024-11-02 18:20:29
원래의
755명이 탐색했습니다.

How to Efficiently Read Integers from a Text File with Varying Integer Counts Using C   ifstream?

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' 관용구는 제공된 lvalue 참조가 이동 후에도 유효한지 확인합니다. 불필요한 문자 복사를 피하기 때문에 효율성을 위해 이동이 필요합니다.

이러한 솔루션은 줄의 일관성 여부에 관계없이 텍스트 파일에서 정수를 추출하고 이를 벡터에 저장하는 효율적이고 다양한 방법을 제공합니다. 다양한 정수.

위 내용은 C ifstream을 사용하여 정수 개수가 다양한 텍스트 파일에서 정수를 효율적으로 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿