Problem z justowaniem tekstu

Witam. Mam pytanie odnośnie pozbycia się spacji, mianowicie odstępów “zbyt długich” w programie, nie tracąc przy tym zdefiniowanych 35 znaków w każdej linii. Jak tego dokonać? Po prostu żeby tekst leciał jak trzeba, lecz bez tych dużych spacji… i Zachowaniu 35 znaków w każdej linii. Co muszę zmienić w programie? Próbowałem odejmować i zmieniać wartości pozycji początkowych, końcowych i bez rezultatu, a może wystarczy zmienić jedną funkcję. Prosiłbym o pomoc.

#include <string>
#include <iostream>
 
#define NUM_IN_ROW 35
 
std::string text_cut( std::string &, int &, int & );
void text_align( std::string & );
 
int main()
{
    std::string original_text;
    std::string result_line;
 
 
    original_text = "Informatyka to dyscyplina nauki zaliczana do nauk scislych oraz techniki zajmujaca sie przetwarzaniem informacji, "
    "w tym rowniez technologiami przetwarzania informacji "
    "oraz technologiami wytwarzania systemow przetwarzajacych informacje "
    "Poczatkowo stanowila czesc matematyki, pozniej rozwinela sie do odrebnej dyscypliny, "
    "pozostaje jednak nadal w scislej relacji z matematyka, ktora dostarcza informatyce podstaw teoretycznych. ";
    int t_length = original_text.length();
 
    int start_pos = 0;
    int end_pos =(( start_pos + NUM_IN_ROW ) < t_length ) ?( start_pos + NUM_IN_ROW )
        : t_length;
    while( start_pos < end_pos ) {
        result_line = text_cut( original_text, start_pos, end_pos );
        text_align( result_line );
        end_pos =(( start_pos + NUM_IN_ROW ) < t_length ) ?( start_pos + NUM_IN_ROW )
            : t_length;
        std::cout << result_line << std::endl;
    }
 
    return 0;
}
 
std::string text_cut( std::string & txt, int & s_pos, int & e_pos ) {
    std::string buff;
 
 
    if( e_pos == txt.length() ) {
        buff.insert( 0, txt, s_pos, txt.length() - s_pos + 1 );
        s_pos = txt.length();
        return buff;
    }
 
 
    while( e_pos > s_pos ) {
        if( txt[e_pos--] != ' ' )
             continue;
 
        break;
    }
    buff.insert( 0, txt, s_pos, e_pos - s_pos + 1 );
    s_pos = e_pos + 2;
 
    return buff;
}
 
void text_align( std::string & txt ) {
 
    int pos = 0;
    while( txt.length() < NUM_IN_ROW ) {
        if( txt[pos++] == ' ' ) {
            txt.insert( pos, " ", 1 );
            pos++;
        }
        if( pos >= txt.length() )
             pos = 0;
 
    }
}

Dodam, że udaje mi się doprowadzić ten stan, żeby nie było długich spacji co prawda, ale niestety wtedy linie są nierówne wartości 35, bynajmniej większość z nich, a czynię to usuwając to ten fragment programu, który jest na samym dole. Może niepotrzebnie go usuwam i wystarczy zmienić coś w tym programie innego? Jeszcze inaczej mówiąc, jeśli ktoś nie zrozumiał zależy mi na podstawie tego kodu na wyjustowaniu całego tego tekstu tak, by konsola widziała odstępy od wyrazów zawsze jako jedną spację. Ale podkreślam na podstawie tego kodu programu, który w tym temacie przedstawiłem… Co powinienem i jak dokładnie zmodyfikować w nim. A poniżej przedstawiam fragment, po którego usunięciu z kodu programu jak wspominałem udaje mi się wyjustować tekst, żeby nie było w nim więcej niż 1 spacji, ale niestety nie ma wtedy w każdej lini 35 znaków

int pos = 0;
    while( txt.length() < NUM_IN_ROW ) {
        if( txt[pos++] == ' ' ) {
            txt.insert( pos, " ", 1 );
            pos++;
        }
        if( pos >= txt.length() )
             pos = 0;
}

Ja to bym prawdopodobnie zmienił cały program.