Ukládání do složky – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Ukládání do složky – C / C++ – Fórum – Programujte.comUkládání do složky – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
matesz0
Návštěvník
30. 5. 2012   #1
-
0
-

Zdravím, mám program co umožňuje uložit data do složky, ale mám problém že když  to jednou uložím (pomocí   ofstream ) a chci to uložit znova tak se mi ten původní soubor přepíše. Chtěl bych se zeptat jestli jde udělat  že by se ty soubory ukládaly třeba s číslem za názvem např: data.txt, data1.txt, data2.txt ....

zkoušel jsem tohle   

 ofstream file("D:\\Datac\\data.txt"+1);
for ()
{
file<<ty veci ;
} ale nefunguje to.

 díky za rady.
 
Nahlásit jako SPAM
IP: 90.176.181.–
Reklama
Reklama
yaqwsx+9
Posthunter
30. 5. 2012   #2
-
0
-

Jasně že se ti přepíše - ten soubor neustále pojmenováváš. Tvůj přístup je správný - musíš k názvu souboru nakonec přidat číslo. V C++ nemůžeš jen tak přidávat čísla k řetězcům. Nejjednodušší postup je připravit si název souboru do stringu. Číslo do stringu dostaneš pomocí třídy stringstream.

Tolik k teorii. Osobně používám jednu fintu u třídy stringstream - její použití tříští kód, je hůře čitelný. Proto si již ze zásady vždy vtvořím hlavičkový soubor s následujícími operátory:

template <class Whatever>
string operator+(const string & a, const Whatever & b)
{
  stringstream ss; ss << a << b; return ss.str();
}

template  <class Whatever>
string & operator+=(string & a, const Whatever & b) {
  stringstream ss; ss << a << b; a = ss.str(); return a;
} 

Když mám takto nadefinované operátory, můžu napsat následující:

string nazevsouboru("soubor");
int i = 1;
nazevsouboru += i;
nazevsouboru += ".txt"
ofstream soubor(nazevsouboru.c_str());
Nahlásit jako SPAM
IP: 85.160.60.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
matesz0
Návštěvník
30. 5. 2012   #3
-
0
-

Díky za objasnění, ale jaksi jsem nepochopil jak tam ten kód vložit    když to mám takhle:  

 
if(ul==1)
          {
                      ofstream file("D:\\Datac\\hesla.txt");
      
                     for(neco=1;neco<=i;neco++)
        {
                               file<<endl;
                             
           file << " prace   "   <<test[neco].prace << endl;
           file << " cislo  "  <<test[neco].cislo << endl;
           file <<"______________________________________";
                                               }
                                  }

A chtěl bych se ještě zeptat když ty soubory budu chtít otevřít, existuje něco jako že by to zobrazilo vše ve složce data s příponou .TXT, vypsalo to ty soubory a já bych si pak zvolil co chci otevřít.

Nahlásit jako SPAM
IP: 90.176.181.–
yaqwsx+9
Posthunter
30. 5. 2012   #4
-
0
-

Můj kód ti ukazuje jak spojit textový řetězec s číslem. Nepochopil jsem tvůj kód - konkrétně kde je potřeba číslování souborů. Např. když bych chtěl vytvořit 10 souborů s názvy soubor1 až soubor10, tak by kód vypadal takto:

for(int i = 1; i != 11; i++)
{
	string nazevsouboru("soubor");
	nazevsouboru += i;
	ofstream soubor(nazevsouboru.c_str());
}

Standardní knihovna neposkytuje funkci pro zjištěníobsahu složky. Je nutno buď použít platformově závislá řešení (WinAPi, popř. standardní knihovna Linuxu) anebo si usnadnit práci použitím knihovny boost.

EDIT: Ještě jsem si vzpomněl na jedno téma na StackOverflow plné užitečných informací - http://stackoverflow.com/questions/612097/how-can-i-get-a-list-of-files-in-a-directory-using-c-or-c

Nahlásit jako SPAM
IP: 85.160.60.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
Matrix17
~ Anonymní uživatel
285 příspěvků
31. 5. 2012   #5
-
0
-

Nebo nemusíš nic přetěžovat a udělat to takhle:

sprintf (vysledek, "soubo%d.txt", cislo);

Nahlásit jako SPAM
IP: 213.226.237.–
matesz0
Návštěvník
31. 5. 2012   #6
-
0
-

yaqwsx: Díky za kód, ale ještě  jsem se pořádně nedostal k hlavičkovým souborům a pořádně nevím jak to tam vložit  

Nahlásit jako SPAM
IP: 90.176.181.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 94 hostů

Podobná vlákna

Cesta při ukládání do složky — založil Karel Gott

Ověření složky — založil Atheo

Vytvoření složky — založil eidam1995

Vytvoření složky — založil Kalgys

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý