C++의 파일에서 Int를 읽는 방법

  1. while 루프 및>>연산자를 사용하여 C++의 파일에서 Int 읽기
  2. while 루프와>>연산자를push_back 메서드와 결합하여 파일에서 Int를 읽습니다
  3. while 루프 및eof()메서드를 사용하여 파일에서 Int를 읽지 마십시오

이 기사에서는 파일에서int 데이터를 읽는 방법에 대한 여러 C++ 메서드를 설명합니다.

다음 예제 프로그램에서 텍스트 파일 이름이 input.txt라고 가정합니다.이 파일에는 여러 줄에 공백으로 구분 된 정수가 포함됩니다. 각 샘플 코드는이 파일 이름이 실제 파일 스트림과 연결되어 있는지 확인하고 오류 발생시 해당 오류 메시지를 인쇄합니다.

  • input.txt의 내용 :
123 178 1289 39
90 89 267 909 23
154 377 34 974 322

while 루프 및>>연산자를 사용하여 C++의 파일에서 Int 읽기

이 메서드는while 루프를 사용하여 EOF (파일 끝)에 도달 할 때까지 프로세스를 반복하고 각 정수를 숫자 변수에 저장합니다. 그런 다음 루프 본문에서 콘솔에 각 번호를 인쇄 할 수 있습니다.

#include <iostream>
#include <fstream>

using std::cout; using std::cerr;
using std::endl; using std::string;
using std::ifstream;

int main()
{
    string filename("input.txt");
    int number;

    ifstream input_file(filename);
    if (!input_file.is_open()) {
        cerr << "Could not open the file - '"
             << filename << "'" << endl;
        return EXIT_FAILURE;
    }

    while (input_file >> number) {
        cout << number << "; ";
    }
    cout << endl;
    input_file.close();

    return EXIT_SUCCESS;
}

산출:

123; 178; 1289; 39; 90; 89; 267; 909; 23; 154; 377; 34; 974; 322;

while 루프와>>연산자를push_back 메서드와 결합하여 파일에서 Int를 읽습니다

또 다른 대안으로, 파일에서 각 정수를 가져 와서 이전 예제와 같이 숫자 변수에 저장 한 다음 반복 할 때마다 int벡터로 푸시 할 수 있습니다. 이 시나리오에는 저장된 벡터 번호의 요소를 조작해야하는보다 실용적인 시스템을 모방하는 또 다른 for루프가 포함되어 있습니다.

#include <iostream>
#include <fstream>
#include <vector>

using std::cout; using std::cerr;
using std::endl; using std::string;
using std::ifstream; using std::vector;

int main()
{
    string filename("input.txt");
    vector<int> numbers;
    int number;

    ifstream input_file(filename);
    if (!input_file.is_open()) {
        cerr << "Could not open the file - '"
             << filename << "'" << endl;
        return EXIT_FAILURE;
    }

    while (input_file >> number) {
        numbers.push_back(number);
    }

    for (const auto &i : numbers) {
        cout << i << "; ";
    }
    cout << endl;
    input_file.close();

    return EXIT_SUCCESS;
}

산출:

123; 178; 1289; 39; 90; 89; 267; 909; 23; 154; 377; 34; 974; 322;

while 루프 및eof()메서드를 사용하여 파일에서 Int를 읽지 마십시오

동일한 문제에 접근하기 위해while 루프 조건으로eof()멤버 함수를 사용하는 것을 고려할 수 있습니다. 불행히도 추가 반복이 발생할 수 있습니다. 함수eof()eofbit가 설정된 경우에만 true를 반환하므로 초기화되지 않은 항목이 수정되는 반복으로 이어질 수 있습니다. 이 시나리오는 아래 코드 샘플로 설명됩니다.

#include <iostream>
#include <fstream>
#include <vector>

using std::cout; using std::cerr;
using std::endl; using std::string;
using std::ifstream; using std::vector;

int main()
{
    string filename("input.txt");
    vector<int> numbers;

    ifstream input_file(filename);
    if (!input_file.is_open()) {
        cerr << "Could not open the file - '"
             << filename << "'" << endl;
        return EXIT_FAILURE;
    }

    while (!input_file.eof()) {
        int tmp;
        input_file >> tmp;
        numbers.push_back(tmp);
    }

    for (const auto &i : numbers) {
        cout << i << "; ";
    }
    cout << endl;
    input_file.close();

    return EXIT_SUCCESS;
}

산출:

123; 178; 1289; 39; 90; 89; 267; 909; 23; 154; 377; 34; 974; 322;

관련 문장 - C++ File

  • C++에서 파일에 텍스트를 추가하는 방법
  • C++에서 디렉터리의 파일 목록을 가져 오는 방법