tworzenie nowego pliku

0

Witam
Robię program którego zadaniem jest przekształceni txt do xml. mam pewne dane zapisane w txt i che przenieś je do xml według ustalonego przez siebie wzorca. w pliku txt znajduje się duża liczba dany różniąca się w kilku linijkach. program dochodzi do pewnego momentu określonego przez ze mnie i zapisuje do pliku tylko pierwsza grupę danych, reszty nie bierze pod uwagę, używam do zapisu

   plik_z.create( "yogi_.xml");
 char nazwa_pliku[20] = "yogi_.xml";
                   
                   plik_z.open(nazwa_pliku);
                   plik_z << "<?xml version='1.0' encoding='windows-1250'?>" <<endl;
                   plik_z << "<DOKUMENT>" <<endl;
                   plik_z << "<NAGLOWEK>" <<endl;
                   plik_z << "<NR_DOKUMENTU>" << dane_naglowek.num_dok <<"</NR_DOKUMENTU>" <<endl;

jak wprowadzić aby program tworzył tyle plików xml ile jest grup danych i tworzył plik yogi_NR_DOKUMENTU.xml

0

Za pomocą pętli oczywiście.

0

to oczywiste tylko nie mogę zmusić c aby tworzyło mi nowe pliki ciągle nadpisuje mi jeden plik

0

No sory ale w kodzie nie widać żebyś zmieniał nazwę pliku więc jak sobie to wyobrażasz? Oczywiste, że jak zapisujesz do tego samego to będzie nadpisywał bo skąd ma wziąć nazwy twoich plików jak podajesz ciągle jedną. Jak napisał @_13th_Dragon musisz to zrobić w pętli.

0

Podałem jak ma teraz zrobione i nie mogę sobie poradzić aby nazwa została pobrana z wczytanego pliku z określonego miejsca jakim jest nr_dokumentu

0

Dalej nie do końca Cię rozumiem ale może chodzi Ci o funkcję:
http://4programmers.net/C/Strcat

0

mam taki plik z danymi

[INFO]
"1.05",3,1250,,
[NAGLOWEK]
"FS",1,0,3063,"3063/MAG/2012",,,"955-207-87-89",
[ZAWARTOSC]
1,1,"5907617676657",1,0,0,1,0.0000,0.0000,"szt.",10.0000,10.0000,7.7800,8.9500,11.0100,23.0000,89.5000,20.5900,110.0900,77.8000,,

Wczytywany jest do programu i otrzymuje plik XML

<?xml version="1.0" encoding="WINDOWS-1250"?>

-<DOKUMENT> -<NAGLOWEK> <NR_DOKUMENTU>3063/MAG/209</NR_DOKUMENTU> <DATA_WYSTAWIENIA>2009.05.21</DATA_WYSTAWIENIA> <TERMIN_PLATNOSCI>2009.06.04</TERMIN_PLATNOSCI> <KOD_DOSTAWCY/> <KOD_ODBIORCY>""</KOD_ODBIORCY> <MIEJSCE_DOSTAWY/> <ILOSC_POZYCJI>1</ILOSC_POZYCJI> <WARTOSC_ZAKUPU_NETTO/> <WARTOSC_SPRZEDAZY_BRUTTO/> </NAGLOWEK> -<POZYCJE> -<POZYCJA> <LP>1</LP> <NAZWA/> <KOD_KRESKOWY/> <INDEKS>Gilza Ramzes 1000</INDEKS> <JM>szt.</JM> <CENA_ZAKUPU_NETTO/> <PROCENT_RABAT>0</PROCENT_RABAT> <PROCENT_VAT>23</PROCENT_VAT> <PKWiU/> <ILOSC>10</ILOSC> <WARTOSC_ZAKUPU_NETTO>8</WARTOSC_ZAKUPU_NETTO> <WARTOSC_SPRZEDAZY_BRUTTO/> </POZYCJA> </POZYCJE> </DOKUMENT>

w miejscu numer dokumentu jest 3063 (numer jest generowany losowo) i chciałbym aby ten numer pokazywał się w nazwie pliku

0

No to odczytujesz ten numer i po prostu wklejasz go do ciągu "yogi_NUMER_PLIKU.xml". Za pomocą funkcji strcat lub ewentualnie sprintf. http://cpp0x.pl/dokumentacja/standard-C/sprintf/586

a tu masz przykład jak użyć:
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/

0

wyskoczył błąd

435 D:\xml\xml_main.cpp [Warning] cannot pass objects of non-POD type struct std::string' through ...'; call will abort at runtime
436 D:\projekt\xml_main.cpp 'struct std::fstream' has no member named 'create'

0

wszystko się skompilowało tylko muszę nieco zmodernizować kod gdyż program się wykracza przy zapisie

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