Как упростить данный код? Если в файле 123456789, нужно чтобы в файл записалось 234567890

    #include <iostream>
#include <fstream>
#include <string>

using namespace std;

void my_task(istream& in, ostream& out)
{   
    char buffer;

    while (!in.eof())
    {
        
        while (in.get(buffer))
        {
            switch (buffer)
            {
            case '0':
                out << 1;
                break;
            case '1':
                out << 2;
                break;
            case '2':
                out << 3;
                break;
            case '3':
                out << 4;
                break;
            case '4':
                out << 5;
                break;
            case '5':
                out << 6;
                break;
            case '6':
                out << 7;
                break;
            case '7':
                out << 8;
                break;
            case '8':
                out << 9;
                break;
            case '9':
                out << 0;
                break;
            }
        }    
    }
}


int main()
{
    setlocale(LC_ALL, "Russian");

    ifstream in("in.txt");
    ofstream out("out.txt");

   
    if (!in.is_open())
    {
        cout << "File not found" << endl;
    }
    
    else
    {
        my_task(in, out);

        cout << "Result in Out.txt " << endl;

        in.close();

        out.close();

        return 0;
    }
}

Ответы (2 шт):

Автор решения: Harry

Вопрос в том, что делать, если в файле не только цифры, а, скажем, еще и перевод строки или буквы. Если только цифры - например, так:

void my_task(istream& in, ostream& out)
{   
    char buffer;
    while(in.get(buffer))
    {
        if (buffer++ == '9') buffer = '0';
        out << buffer;
    }
}

int main()
{
    ifstream in("in.txt");
    if (!in.is_open())
    {
        cout << "File not found" << endl;
    }
    else
    {
        ofstream out("out.txt");
        my_task(in, out);
        cout << "Result in Out.txt " << endl;
    }
}

Если есть еще и другие символы - добавить проверку isdigit на входе.

Кстати, вы делаете проверку, что открылся in.txt - а out.txt нет - нехорошо :)

→ Ссылка
Автор решения: Mikhailo

Можно так:

void my_task(istream& in, ostream& out)
{   
    char buffer;
    while(in.get(buffer))
        out << char((buffer - '0' + 1)%10 + '0');
}
→ Ссылка