Ja do zamiany zmiennej typu int na string oraz string na int używam strumienie napisowe <sstream>.
int suma=0;
stringstream ss; // deklaracja zmiennej strumieniowej do przekazywania danych
ss << suma; //przekazanie zmiennej typu int do strumienia
string daneDoZapisu("D:/bazaSekwencji/sekwencje Suma = " + ss.str() + ".txt"); //sklejanie napisu
cout << daneDoZapisu << "\n";
Przy okazji podepnę się pod temat:
Mam problem z czyszczeniem strumienia w celu wykorzystania go do dalszej pracy.
W programie który pisze potrzebuje zapisywać wyniki pracy do różnych plików. W tym celu ścieżkę do miejsca zapisu umieściłem w stringu daneDoZapisu, który modyfikuje przed zapisem danych do pliku. Modyfikatorem ścieżki jest zmienna typu int.
Mam jednak mały problem z czyszczeniem samego strumienia w trakcje wykonywania pętli, zresztą poza pętlom też mam problem.
int main()
{
int suma=0;
stringstream ss; // zmienna strumieniowa do przekazywania danych z wiersza do zmiennych w tablicy
for (int i=0; i<12; i++)
{
ss << suma;
string daneDoZapisu("D:/Sekwencje/Sekwencje Suma = " + ss.str() + ".txt");
cout << daneDoZapisu << "\n";
suma++;
ss.clear();
getch();
}
return 0;
}
W teorii pod koniec pętli (ss.clear();) powinno wyczyścić strumień przed kolejnym cyklem pętli. Jednak z tego co mi wyświetla w konsoli to chyba nie działa albo robię coś nie tak. W kolejnym cyklu pętli dostaje stringa który jest zmodyfikowany o napis z poprzednich cykli + aktualna modyfikacja.
Co w tym może być nie tak.
Znalazłem już rozwiązanie jak to obejść. Zamiast pojedynczego strumienia deklaruje tablice strumieni [] i w każdym cyklu pentli korzystam z innego strumienia - i dział, ale to nie sprawdzi się w praktyce. Problem w tym że nie wiem dlaczego funkcja clear(); nie czyści mi strumienia przechowującego dane.