Zapisywanie do tablicy string/char

0

Ogólnie chodzi mi o to żeby wczytać plik i dane z niego umieścić w tablicy. Problem jest w tym że prowadzacy(nie wiem czy da się to zrobić jako string czy trzeba jako char, ogólnie miałem nie używać stringów i robić wszystko na char ale coś się sypało więc jest tak jak jest). Wszystkie stringi to oczywiście jeden wyraz a prowadzacy ma składać się z kilku np. inz. Imie Nazwisko i nie wiem jak sobie z tym poradzić. Z góry dziękuje za wszelką pomoc w temacie.

struct Studenci
{
	char prowadzacy[30]; //?????????? 
	string imie;
	string nazwisko;
	int nr_albumu;
	double ocena;
	string data;
};

void Wypisz_osoby(Studenci **osoby, int ile_osob, string plik_wej_z_param) {

	ifstream wejscie(plik_wej_z_param);
	
	
	
	for (int i = 0; i < ile_osob; i++) {
		cout << osoby[i]->imie << " " << osoby[i]->nazwisko << " " << osoby[i]->nr_albumu << " " << osoby[i]->ocena << " " << osoby[i]->data << "\n";
	}


	
}
0

Podstawowym błędem jaki tu popełniasz jest to, że imię może mieć różną długość. Raz będzie to 3 znaki(Ala), raz 6 (Marcin) i już w tym momencie sypie się cały twój program.
Najlepiej jest wybrać sobie jakiś znak separujący np. ';' i zapisywać pojedynczy wpis jako:

 imie;nazwisko;nr_albumu;ocena'\n'

Wtedy wczytujesz linijkę do do string prowadzacy (użyj string, a nie tablicę charów) i do string imie dodajesz chary dopóki nie natrafisz na ';'.

0

Jeśli muszisz użyć char* to użyj istream::getline z odpowiednim delimiterem. Sposób wczytywania w głównej mierze zależy od danych w pliku. Sposobie zapisu itd.
Najlepiej odczyt wykonać analogicznie jak zapis.

Przychylam się do propozycji @bl4ster, std::string.

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