Классы. Сортировка строк, добавление. С++

Мне нужно предусмотреть в этой программе функцию добавления авторов, не знаю как сделать. И еще такой вопрос я сделал сортировку книг по названию, но с помощью char(то есть я не могу делать пробелы в названии) возможно ли сделать ее с string как-то?

#include <iostream>
    #include <string>
    #include <cstring>
    #include <windows.h>
    using namespace std;
    
    class Book
    {
        char name[50];
        int k;
        string author;
        int year;
        int pages;
    
    public:
    Book():
        name(""), k(0), author(""), year(0), pages(0) {}
    ~Book() {}
    void data();
    void out();
    friend void sort1(Book *a, int n);
    char *getname(void)
            {
                return name ;
            }
    };
    void sort1(Book *a, int n)
    {
        for(int i = 0; i < n - 1; i++)
            for(int j = i + 1; j < n; j++)
                if(strcmp(a[i].getname(), a[j].getname())> 0)
                {
                    Book t = a[i];
                    a[i] = a[j];
                    a[j] = t;
                }
    }
    
    void Book::data()
    {
        setlocale(LC_ALL,"Russian");
        cin.ignore(100,'\n');
        cout<<"Название книги: "<<endl;
        cin>>name;
        cout<<"Количество авторов: "<<endl;
        cin>>k;
        cin.ignore(100,'\n');
        cout<<"Автор(ы): "<<endl;
        getline(cin, author);
        cout<<"Год издания: "<<endl;
        cin>>year;
        cout<<"Количество страниц: "<<endl;
        cin>>pages;
        }
    void Book::out()
    {
        cout<<"Название книги: "<<name<<endl;
        cout<<"Количество авторов: "<<k<<endl;
        cout<<"Автор(ы): "<<author<<endl;
        cout<<"Год издания: "<<year<<endl;
        cout<<"Количество страниц: "<<pages<<endl;
    }
    
    int main()
    {
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int n,i;
    cout<<"Введите количество книг: ";
    cin>>n;
    Book *a=new Book[n];
    for (i=0;i<n;i++)
    {
        cout<<"Книга "<<i+1<<endl;
        a[i].data();
    }
    for (i=0;i<n;i++)
    {
        a[i].out();
    }
    sort1(a, n);
    cout<<endl;
    cout<<"Названия книг по алфавиту: "<<endl;
    for (i=0;i<n;i++)
    {
        a[i].out();
    }
    
    return 0;
    }

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

Автор решения: Кирилл
#include <iostream>
#include <string>
#include <cstring>
#include <windows.h>
#include <vector> //подключаем векторы
using namespace std;

class Book
{
    string name;
    int k;
    vector<string> author; //поменяли string на vector<string>
    int year;
    int pages;

public:
    Book() :
        name(""), k(0), author(vector<string>(1,"")), year(0), pages(0) {} //authot("") => author(vector<string>(1,""))
    ~Book() {}
    void data();
    void out();
    friend void sort1(Book* a, int n);
    const char* getname(void)
    {
        return name.c_str(); // костыль, что бы не менять код sort1, возвращаем строку в виде const char*
    }
};
void sort1(Book* a, int n)
{
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (strcmp(a[i].getname(), a[j].getname()) > 0)
            {
                Book t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
}

void Book::data()
{
    setlocale(LC_ALL, "Russian");
    cin.ignore(100, '\n');
    cout << "Название книги: " << endl;
    getline(cin, name); //изменено cin>>name; 
    cout << "Количество авторов: " << endl;
    cin >> k;
    cin.ignore(100, '\n');
    cout << "Автор(ы): " << endl;
    string temp;
    int i = k; //
    while (i--!=0) { //
        getline(cin, temp); // построчно считываем авторов
        author.push_back(temp); //
    } //
    cout << "Год издания: " << endl;
    cin >> year;
    cout << "Количество страниц: " << endl;
    cin >> pages;
}
void Book::out()
{
    cout << "Название книги: " << name << endl;
    cout << "Количество авторов: " << k << endl;
    cout << "Автор(ы): "; //
    for (auto elem : author) // выводим всех авторов одной строкой
        cout << elem << " "; //
    cout << endl; //
    cout << "Год издания: " << year << endl;
    cout << "Количество страниц: " << pages << endl;
}

int main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    int n, i;
    cout << "Введите количество книг: ";
    cin >> n;
    Book* a = new Book[n];
    for (i = 0; i < n; i++)
    {
        cout << "Книга " << i + 1 << endl;
        a[i].data();
    }
    for (i = 0; i < n; i++)
    {
        a[i].out();
    }
    sort1(a, n);
    cout << endl;
    cout << "Названия книг по алфавиту: " << endl;
    for (i = 0; i < n; i++)
    {
        a[i].out();
    }

    return 0;
}
→ Ссылка