Nazwa pliku txt ze zmiennej C++

0

Witam.
Chciałem napisać prosty program, który będzie tworzył swego rodzaju archiwum z danych wpisywanych przez użytkownika.
A dokładniej pobiera on datę z komputera i jeśli nie minęło 10 pierwszych dni miesiąca pyta czy chcemy cofnąć miesiąc zapisu (o tym za chwilę) i niezależnie od odpowiedzi tworzy plik *.txt zawierający rok i miesiąc w nazwie np. 2015-8.txt (w wypadku odpowiedzi twierdzącej utworzy 2015-7.txt) i tu właśnie pojawia się mój problem, ponieważ nie umiem utworzyć pliku o nazwie pochodzącej ze zmiennych.
Jeśli ktoś z Was zna na to sposób, to bardzo prosiłbym o wyjaśnienie jak to zrobić.
Jest to dla mnie bardzo ważne ponieważ od tego zależy dalszy rozwój tego kodu.

Chodzi o ostatnie parę linijek kodu. (poniżej drugiej lini z ///////////)(wiem, że wyrażenie "Data[0]-Data[1].txt" jest nieprawidłowe i tworzy plik Data[0]-Data[1].txt i to właśnie o ten moment mi chodzi)

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream>



int main(int argc, char** argv) {
	
	time_t czas;
	time(&czas);
	int Czas[3]={localtime(&czas)->tm_year+1900,localtime(&czas)->tm_mon+1,localtime(&czas)->tm_mday};	//Czas[] 0 - ROK, 1 - MIESIĄC, 2 - DZIEŃ
	int Data[2]={Czas[0],Czas[1]};
	
	////////////////////////////////////////////////////
	
	char decyzja;
	if (Czas[2]<=10){
		std::cout<<"Dzisiejsza data: "<<Czas[0]<<"-"<<Czas[1]<<"-"<<Czas[2]<<"\nOd poczatku miesiaca nie minelo 10 dni, czy chcesz cofnac miesiac? (T/N) ";
		std::cin>>decyzja;
		while (decyzja!='T'&&decyzja!='t'&&decyzja!='N'&&decyzja!='n'){
			std::cout<<"Nieprawidlowa wartosc.\nCzy chcesz cofnac miesiac? (T/N) ";
			std::cin>>decyzja;
		}
		if (decyzja=='T'||decyzja=='t'){
			if (Data[1]==1){
				Data[1]=12;
				Data[0]=Data[0]-1;
			}
			else{
				Data[1]=Data[1]-1;	
			}
		}
	}
	std::cout<<"Dzisiejsza data: "<<Czas[0]<<"-"<<Czas[1]<<"-"<<Czas[2]<<std::endl<<"Obecny plik zapisu: \""<<Data[0]<<"-"<<Data[1]<<".txt\""<<std::endl;
	
	////////////////////////////////////////////////////
	
	std::fstream plik;
	plik.open ("Data[0]-Data[1].txt", std::ios::in | std::ios::out | std::ios::app);
	
	
	
	
	
	plik.close();
	
	return 0;
	system("Pause");
}

W razie potrzeby dodaję też obrazek z diagramem.
a27156190b.png

1

A gdzie zmienna

string

do której zapisujesz nazwę pliku?

0

Nazwy nie chcę zapisać do zmiennej, a już na pewno nie string jeśli to nie jest konieczne, tylko chcę utworzyć nazwę pliku z dwóch zmiennych liczbowych, ale możliwe że nie zrozumiałem jaki sposób masz na myśli.

1

Ale chcesz, żeby nazwa pliku to było złożenie tego co jest pod data1 i data0.
Zapisz nazwę pliku do string jak sugerował przedmówca. Użyj do tego metody to_string np. (jeśli używasz C++11), żeby przerobić dane z data[0] i data[1] na string:
http://www.cplusplus.com/reference/string/to_string/
i złożyć sobie nazwę pliku:

string nazwaPliku = nazwa1 + "-"+ nazwa2; 
 

a jeśli nie używasz c++11 to taki artykuł znalazłem na tej stronie (napisany przez spartanPAGE):
Konwersje int na string i string na int

a wtedy plik otwierasz tak:

 plik.open (nazwaPliku, std::ios::in | std::ios::out | std::ios::app);
0

Dziękuję, teraz podpowiedź Newbie_C o string-u nabrała sensu.
Serdecznie dziękuję za pomoc! :D

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