Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » int in Copyfile ?!?!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
17.06.2003, 12:06 Uhr
~pi
Gast


Hallo,
den vector hab ich jetzt im CopyFile drin aber wie mach ich das mit einem int??
Ich hab es schon mit (char)i versucht, ging aber nicht... unten habe ich den code der nicht funktioniert...


C++:
    for(int i=0; i < vDateinamen.size(); i++)
    {
        CopyFile(((string)m_laufwerk + ":\\DCIM\\100OLYMP\\" + vDateinamen[i]).c_str(),m_path + m_datum + " " + m_title + "\\" + m_datum + " " + m_title + i + ".jpg", FALSE);
    }



ThX
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.06.2003, 12:23 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ist zwar nicht ansi, aber egal:
itoa macht dir aus einem int ein char-array.
oder du nimmst sprintf

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.06.2003, 12:36 Uhr
Pablo
Supertux
(Operator)


Ich würde dir raten, sprintf zu nehmne, da sprintf ansi ist und vor allem portabel.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.06.2003, 12:42 Uhr
~pi
Gast


hm... könnt ihr das genau in meinem beispiel anwenden? bin totaler anfänger!

ThX
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.06.2003, 12:44 Uhr
~0xdeadbeef
Gast


Es gibt zwei Gründe, weswegen man itoa nicht benutzen sollte. Zum einen ist es nicht portabel - wobei das bei diesem Programm nicht weiter ins Gewicht fällt, CopyFile usw. sind auch nicht portabel. Zum anderen ist itoa eine häufige Quelle für Speicherlecks. itoa fordert per malloc Speicher an, den man von Hand wieder freigeben muss - und das vergißt man gerne, vor allem, weil man versucht ist, solchen Code zu schreiben:

C++:
string s = "Test";
s += itoa(123);


Dann verliert man die Speicheradresse, an die itoa geschrieben hat, und hat keine Möglichkeit, den Speicher wieder freizugeben. Richtig wäre da:

C++:
string s = "Test";
char *p = itoa(123);
s += p;
free(p);


Allerdings kann man dann auch sprintf verwenden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
17.06.2003, 13:04 Uhr
~pi
Gast


es klappt leider absolut nicht... itoa will direkt schonmal 3 paramerter haben... da hab ich die letzten beiden auf NULL gesetzt. Aber dann sürzt mein programm ab...

kann mir einer ein beispiel machen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
17.06.2003, 13:10 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich kenne itoa nicht. Aber wie wärs mit sprintf

C++:
char buffer[1000];
char* text = "Irgendein text";
int zahl = 4711;

sprintf(buffer, "%s%d", text, zahl");


Hat halt den nachteil, daß der Ergebnisstring in der Länge begrenzt ist (hier 999 Zeichen ohne 0 Byte) und das ganz nicht Typsicher ist. Daher die C++ alternative:

C++:
ostringstream ss;
ss << "Text" << 4711<<;
string s = ss.str();


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
17.06.2003, 13:12 Uhr
~0xdeadbeef
Gast


Ach ja, Windows. Klar, die machen wieder alles anders, da geht das so:

C++:
char *itoa(int Value, char *Str, int Radix);


Dann geht das so:

C++:
char str[10]; //Buffer für die Zahl. Die Zahl darf nicht mehr als 9 Zeichen haben, wenn es mehr sein soll, setz die größe des Arrays rauf
int zahl = 123456789, basis = 10;

cout << itoa(zahl, str, basis) << endl; //s enthält jetzt zahl als String zur Basis 10. Rückgabewert ist str.

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
17.06.2003, 13:14 Uhr
~0xdeadbeef
Gast


Ups, Windows arbeitet ja mit 16-bit-ints. Dann passt 123456789 nicht in einen int rein - nimm halt eine Zahl unter 32768.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
17.06.2003, 13:17 Uhr
~pi
Gast


Hallo,
ich hab das jetzt mal so gelöst...
aber jetzt hab ich immernoch ein problem.

beim ersten schleifendurhclauf steht im index
0 beim 2.
01 beim 3.
012

wie kann ich den Str den jetzt löschen?



C++:
    ostringstream Str;
    string index;

    for(int i=0; i < vDateinamen.size(); i++)
    {
        Str << i;
        index = Str.str();
        CopyFile(((string)m_laufwerk + ":\\DCIM\\100OLYMP\\" + vDateinamen[i]).c_str(),((string)m_path + (string)m_datum + " " + (string)m_title + "\\" + (string)m_datum + " " + (string)m_title + " " + (string)index + ".jpg").c_str(), FALSE);
    }

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: