파일에서 숫자 읽고 합산하기

C++Beginner
지금 연습하기

소개

이 랩에서는 파일에서 숫자를 읽어 줄 단위로 합산한 다음 결과를 다른 파일로 출력하는 방법을 배웁니다. 이 튜토리얼의 단계를 따르면 다음과 같은 C++ 프로그램을 작성하는 방법을 배우게 됩니다.

새 C++ 파일 생성

~/project 디렉토리에 file_sum.cpp라는 새 파일을 생성합니다.

touch ~/project/file_sum.cpp

필요한 라이브러리 포함

C++ 에서 파일 작업을 하려면 프로그램에 <iostream><fstream> 라이브러리를 포함해야 합니다. 다음 코드를 file_sum.cpp 파일에 추가하십시오.

#include <iostream>
#include <fstream>

using namespace std;

사용자에게 파일 이름 묻기

사용자에게 파일 이름을 묻습니다. 다음 코드를 file_sum.cpp 파일에 추가하십시오.

int main()
{
    char fileName[50];
    cout << "Enter file name: ";
    cin.getline(fileName, 50);
    ifstream inFile(fileName);
    ofstream outFile("sum.txt");
    string line;
}

여기서는 사용자가 입력할 파일 이름을 저장하기 위해 fileName char 배열을 선언합니다. 그런 다음 사용자에게 파일 이름을 입력하라는 메시지를 표시하고 이를 fileName 배열에 저장합니다. 마지막으로, 입력 파일 inFile을 열기 위해 ifstream 객체를 생성하고, 출력 파일 outFile을 생성하기 위해 ofstream 객체를 생성합니다. 또한 입력 파일의 각 줄을 저장하는 데 사용될 line 문자열을 선언합니다.

파일 읽고 숫자 합산

이제 파일을 읽고 각 줄의 숫자를 합산하는 코드를 작성합니다. 파일의 각 줄에 대해 stringstream 객체를 사용하여 숫자를 읽고, 합산한 다음 합계를 출력 파일에 씁니다. 다음 코드를 file_sum.cpp 파일에 추가하십시오.

while (getline(inFile, line))
{
    int sum = 0;
    stringstream ss(line);
    int num;
    while (ss >> num)
    {
        sum += num;
    }
    outFile << sum << endl;
}

여기서는 while 루프를 사용하여 입력 파일의 각 줄을 읽고, 해당 줄을 line 문자열에 저장합니다. 그런 다음 sum 변수를 0으로 초기화하고, 각 줄의 내용을 담는 stringstream 객체 ss를 생성합니다. 그런 다음 stringstream에서 각 숫자를 num으로 추출하고 각 숫자로 sum 변수를 증가시킵니다. 해당 줄의 모든 숫자가 처리된 후, sum을 출력 파일 outFile에 씁니다.

파일 닫기 및 사용자에게 알림

마지막으로, 입력 및 출력 파일을 닫고 파일이 처리되었음을 사용자에게 알려야 합니다. 다음 코드를 file_sum.cpp 파일에 추가하십시오.

inFile.close();
outFile.close();
cout << "File processed successfully." << endl;
return 0;

코드 컴파일 및 실행

다음 명령을 사용하여 file_sum.cpp 코드를 컴파일합니다.

g++ file_sum.cpp -o file_sum

터미널에서 다음 명령으로 코드를 실행합니다.

./file_sum

처리하려는 파일 이름을 입력하라는 메시지가 표시됩니다. 이름을 입력하고 Enter 키를 누르십시오. 프로그램은 파일을 읽고, 줄별로 숫자를 합산하며, 결과를 sum.txt라는 새 파일에 씁니다.

전체 코드

다음은 file_sum.cpp 파일의 전체 코드입니다.

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
    char fileName[50];
    cout << "Enter file name: ";
    cin.getline(fileName, 50);
    ifstream inFile(fileName);
    if (!inFile)
    {
        cerr << "Unable to open file" << endl;
        return -1;
    }
    ofstream outFile("sum.txt");
    string line;

    while (getline(inFile, line))
    {
        int sum = 0;
        stringstream ss(line);
        int num;
        while (ss >> num)
        {
            sum += num;
        }
        outFile << sum << endl;
    }

    inFile.close();
    outFile.close();
    cout << "File processed successfully." << endl;
    return 0;
}

요약

이 랩에서는 C++ 표준 라이브러리 <iostream><fstream>stringstream 클래스를 사용하여 파일을 읽고, 줄별로 숫자를 합산하고, 결과를 다른 파일에 쓰는 방법을 배웠습니다. 이제 C++ 프로그램에서 파일을 처리하고 많은 기본 파일 작업을 사용할 수 있어야 합니다.