Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

fstream i pewien problem

Ostatnio zmodyfikowano 2011-03-26 18:11
Autor Wiadomość
Stasiulski
Temat założony przez niniejszego użytkownika
fstream i pewien problem
» 2011-03-26 12:47:29
Witam. Zamierzam zrobić program z użyciem fstreama, ale mi to nie wychodzi. Mianowicie piszę o tym, że najpierw deklaruję zmienną ( long data; ) i zamierzam nazwać tak plik ( tak jak nauczyła mnie nauczycielka ). A nauczyła mnie tak, że ofstream deklaracja ("nazwa pliku.txt"); . I tam gdzie jest nazwa pliku chcę nazwać to taką cyfrą jaką wprowadzono do zmiennej data. Innymi słowy:

C/C++
#include <iostream>
#include <conio.h>
#include <fstream.h>
using namespace std;

main()
{
    cout << "Podaj date (DDMMRRRR): ";
    long data;
    cin >> data;
    ofstream dane( /*Tu chcę nazwać plik liczbą wprowadzoną za pomocą zmiennej data*/ ".txt" );
    // itd...
}

Proszę pomóżcie bo potrzebuję pomocy a muszę to zrobić do za tydzień (sobota, 2 kwietnia)
P-29775
pekfos
» 2011-03-26 12:54:27
C/C++
#include <sstream>
//..
ostringstream oss;
oss << data << ".txt";
ofstream file( oss.str() );
[/code]
P-29776
Stasiulski
Temat założony przez niniejszego użytkownika
» 2011-03-26 13:04:01
mógłbyś mi wytłumaczyć do się dzieje "po kolei" w tych liniach programu co podałeś? i co te funkcje mają za ... funkcję ? :D
P-29778
Stasiulski
Temat założony przez niniejszego użytkownika
» 2011-03-26 13:08:36
To inaczej. Bo mi nie działa . Popraw moje błędy w tym zapisie jeśli możesz:

C/C++
#include <iostream>
#include <conio.h>
#include <fstream.h>
#include <sstream>
using namespace std;

main()
{
    cout << "DDMMRRRR: ";
    long data;
    cin >> data;
    ostringstream oss;
    oss << data << ".txt";
    ofstream file( oss.str() );
    cout << "Imie i nazwisko: ";
    string dane;
    cin >> dane;
    file << dane;
    cout << "Dziekujemy!";
    system( "pause" );
}
P-29779
WiecznyWem
» 2011-03-26 13:12:57
Mógłbyś to zrobić też w taki sposób:
-piszesz funkcje która zamienia liczbę na string. Podaję przykład, z 4programmers.net.
C/C++
std::string intToStr( int n ) {
    std::string tmp;
    if( n < 0 ) {
        tmp = "-";
        n = - n;
    }
    if( n > 9 )
         tmp += intToStr( n / 10 );
   
    tmp += n % 10 + 48;
    return tmp;
};
-tworzysz stringa który będzie przechowywał nazwę pliku
C/C++
std::string tmp = intToStr( data ) + ".txt";
-Potem przekazujesz go do zmiennej ofstream dane.
C/C++
ofstream dane( tmp ); //jeżeli nie zadziała, to zamiast tmp wpisz tmp.c_srt()

Nie wiem czy to najlepszy sposób rozwiązania problemu, ale taki wpadł mi do głowy. ;)
P-29780
pekfos
» 2011-03-26 14:08:34
C/C++
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;

int main()
{
    cout << "DDMMRRRR: ";
    long data;
    cin >> data;
    ostringstream oss;
    oss << data << ".txt";
    ofstream file( oss.str().c_str() );
    cout << "Imie i nazwisko: ";
    string dane;
    cin >> dane;
    file << dane;
    cout << "Dziekujemy!";
}

main musi coś zwracać
nie używaj fstream.h ani iostream.h
nie myl nazw zmiennych!! naucz się czytać logi!
P-29782
szyx_yankez
» 2011-03-26 14:29:50
main musi coś zwracać
Musi, ale nie jest konieczne pisanie tego, gdyż standard przyjmuję, że w takim wypadku kompilator sam doda
return 0;
P-29784
ison
» 2011-03-26 16:40:09
@up
jak już to 'przyjmuje' a nie 'przyjmuję'

poza tym pekfosowi chodziło o
C/C++
int main()
zamiast
C/C++
main()
a nie o
C/C++
return 0;
P-29785
« 1 » 2
  Strona 1 z 2 Następna strona