klasa, problem z wprwoadzeniem danych i wypisaniem litery stringa

0

Witam, definiuje klasę osoba tutaj mój kod:

#include <iostream>
#include <conio.h>
#include <string>
#include <cassert>
class Osoba
{
public:

    std::string pierwszeimie;
    std::string drugieimie;
    std::string nazwisk;

    int IleImion();
    std::string Imie();
    std::string Imiona();
    std::string Nazwisko();
    std::string ImionaINazwisko();
    std::string InicjalyINazwisko();
};
int Osoba::IleImion()
    {
    int liczbaimion;
        if(drugieimie=="")
            {
                liczbaimion=1;
                std::cout<<liczbaimion<<"\n";
            }
        else
            {
                liczbaimion=2;
                std::cout<<liczbaimion<<"\n";
            }
 return liczbaimion;
    }

std::string Osoba::Imie()
    {
        std::cout<<pierwszeimie<<"\n";
        return pierwszeimie;
    }

std::string Osoba::Imiona()
    {
        std::string imio;
        if(drugieimie=="")
    {
         imio=pierwszeimie;
         std::cout<<imio<<"\n";
    }
    else
    {
        imio=pierwszeimie+" "+drugieimie;
        std::cout<<imio<<"\n";
    }
    return imio;
    }
    std::string Osoba::Nazwisko()
    {
        std::cout<<nazwisk<<"\n";
        return nazwisk;
    }

    std::string Osoba::ImionaINazwisko()
    {
        std::string imieinazwisko;
        if(drugieimie=="")
        {
            imieinazwisko=pierwszeimie+" "+nazwisk;
            std::cout<<imieinazwisko<<"\n";
        }
        else
        {
            imieinazwisko=pierwszeimie+" "+drugieimie+" "+nazwisk;
            std::cout<<imieinazwisko<<"\n";
        }
    return imieinazwisko;
    }
    std::string Osoba::InicjalyINazwisko()
    {
         std::string inicjaly;
             if(drugieimie=="")
             {
                inicjaly=pierwszeimie[1]+". "+nazwisk;
                std::cout<<inicjaly;
             }
             else
             {
                 inicjaly=pierwszeimie[1]+". "+drugieimie[1]+" "+nazwisk;
                   std::cout<<inicjaly;
              }   

        return inicjaly;
    }




 int main()
 {
     Osoba czlowiek;
     czlowiek.pierwszeimie="Jan";
     czlowiek.drugieimie="Karol";
     czlowiek.nazwisk="Wscieklica";
     czlowiek.Imie();
     czlowiek.IleImion();
     czlowiek.Imiona();
     czlowiek.Nazwisko();
     czlowiek.ImionaINazwisko();
     czlowiek.InicjalyINazwisko();

 } 

I teraz tak, nie wypisuje mi inicjałów i jeszcze chciałbym tą osobe człowiek tworzyć w taki sposób:
Osoba czlowiek("Jan","Karol","Wscieklica"); ale wtedy program nie działa, próbowałem to jakoś naprawić ale mi nie wychodzi. Gdyby ktoś mógłby mi pomóc byłbym wdzięczny, pozdrawiam serdczenie

0

inicjaly=pierwszeimie[1]+". "+nazwisk;

Stringi indeksuje się od zera. Pierwszy znak to pierwszeimie[0].

0

edit:
ok juz mam mniej wiecej tylko chcialbym do stringa inicjaly zapisac cos takiego:
inicjaly=pierwszeimie[0]+". "+drugieimie[0]+". "+nazwisk;
i wtedy sie psuje wszystko, no i dalej nie wiem jak zrobic zebym mogl osobe wprowadzic tak:
Osoba czlowiek("Jan","Karol","Wscieklica");

0

dodaj konstruktor do klasy osoba:

Osoba(std::string pierwsze, std::string drugie, std::string nazwisko) {
   pierwszeimie = pierwsze;
   drugieimie = drugie;
   nazwisk = nazwisko;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1