Jaki typ zmiennej?

0

Witam,

Mam takie pytanie odnośnie zmiennej c++.
Próbuje dopisać do zmiennej ID ciąg znaków:

string airport, lastname, date, number_place;
system("cls");
cout << "Dodawanie nowej rezerwacji: " << endl;
cout << "Podaj lotnisko startowe: ";
getline(cin, airport);
cout << "Podaj date lotu (Format: YYYY-MM-DD): ";
getline(cin, date);
cout << "Podaj nazwisko pasazera: ";
getline(cin, lastname);
cout << "Podaj nr. miejsca: ";
getline(cin, number_place);


//id = airport[0] << airport[1] << generateId() << airport[0];

file << airport[0] << airport[1] << generateId() << airport[0] << " "; // <symbol lotu>
file << airport << " "; // <lotnisko startowe>
file << date << " "; // <data lotu>
file << lastname << " "; // <nazwisko pasażera>
file << number_place << endl; // <nr miejsca>
file.close();

Chciałbym by to id było równe temu co jest przypisane czyli:

airport[0] << airport[1] << generateId() << airport[0]

Tylko jeśli dopisuję przed id typ typu char to wyrzuca błąd, jeśli dopisuję to w string również wyrzuca błąd.

Dodam jeszcze, że jeśli wypisuję to normalnie: (To wszystko działa poprawnie), tylko chciałbym to wrzucić w jedną zmienną.

cout << airport[0] << airport[1] << generateId() << airport[0]

Funckja generateId():

int generateId() {
	srand(time(NULL));
	int id = rand() % (9999 - 1000 + 1) + 1000;
	return id;
}

Pozdrawiam.

0

Nie ma niestety treści komunikatu błędu, nie pokazałeś też jakie biblioteki zaincludowałeś do projektu - według mnie problemem jest mieszanie typów przy id. Chcesz tam wgrać element tablicy znaków i int. I to wszystko zapisać do char albo string. Zrób z wyniku działania funkcji generującej rand string (uważaj też na zwracaną zmienną. Zwracasz id, później nadpisujesz id innymi wartościami. Rozróżnij te nazwy.).

2

Jeśli dobrze rozumiem to to co cię interesuję to 1 z tych:

Przykład dla opcji std::stringstream (nie testowany, pisany z palca):

#include <iostream>
#include <fstream>
#include <sstream>

int main() {
  std::string foo = "foo";
  int id = 123;
  
  std::stringstream buffer;
  buffer
    << foo
    << "_"
    << id
    << "_"
    << 6.66;

  auto bar = buffer.str();
  std::cout << "bar = " << bar << "\n";

  std::fstream file("file.txt");
  file << bar << "\n";

 return 0;
}

Co do twojego kodu:
system("cls"); to zło, unikaj tego

int generateId() {
    srand(time(NULL));
    int id = rand() % (9999 - 1000 + 1) + 1000;
    return id;
}

srand(time(NULL)); najlepiej jak by było wołane tylko raz (np. w mainie), @kq chyba się nie obrazisz że załączę tutaj ten link: https://dsp.krzaq.cc/post/180/nie-uzywaj-rand-cxx-ma-random/
Zakładam że dodałeś gdzieś na początku u siebie using namespace std; jeśli tak, to nie rób tego ;)

0
plx211 napisał(a):

Jeśli dobrze rozumiem to to co cię interesuję to 1 z tych:

Przykład dla opcji std::stringstream (nie testowany, pisany z palca):

#include <iostream>
#include <fstream>
#include <sstream>

int main() {
  std::string foo = "foo";
  int id = 123;
  
  std::stringstream buffer;
  buffer
    << foo
    << "_"
    << id
    << "_"
    << 6.66;

  auto bar = buffer.str();
  std::cout << "bar = " << bar << "\n";

  std::fstream file("file.txt");
  file << bar << "\n";

 return 0;
}

Co do twojego kodu:
system("cls"); to zło, unikaj tego

int generateId() {
    srand(time(NULL));
    int id = rand() % (9999 - 1000 + 1) + 1000;
    return id;
}

srand(time(NULL)); najlepiej jak by było wołane tylko raz (np. w mainie), @kq chyba się nie obrazisz że załączę tutaj ten link: https://dsp.krzaq.cc/post/180/nie-uzywaj-rand-cxx-ma-random/
Zakładam że dodałeś gdzieś na początku u siebie using namespace std; jeśli tak, to nie rób tego ;)

Super dziękuję bardzo można zamknąć :)
Problem rozwiązany :)

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