wie bekomme ich das + von delphi hin
-
hallo,
CopyFile(a, Dir + "\",...);unter delphi konnte ich immer das + verwenden, um einen string anzuhängen. wie geht das unter C++?
-
Hat nicht direkt etwas mit der WinAPI zu tun. In C hat man keine eigentlichen Strings, bzw. alle Strings sind nullterminierte char Arrays. Da geht das dann so:
char buf[0x100] = "Hallo, "; strcat(buf, "Welt!\n");Siehe: http://www.cplusplus.com/reference/clibrary/cstring/
Nur muss man hier sehr aufpassen, dass man nicht über die Puffergröße hinausschreibt.In C++ hat man da Hilfe von einer Stringklasse, die die geeigneten Operatoren überläd und ihren internen Speicher automatisch anpasst:
std::string s = "Hallo, "; s += "Welt!\n";Siehe: http://www.cplusplus.com/reference/string/string/
Für C Funktionen bietet sich dann die Methode c_str() von std::string an:
std::string Dir = "C:"; CopyFile(a, (Dir + "\\").c_str(),...);Mit Backslashes in Strings solltest du aufpassen!
http://de.wikipedia.org/wiki/Escape-Sequenz
-
läuft nicht aber trotzdem danke
ich verwende den c++ builder compiler
-
maulwurf1655 schrieb:
läuft nicht aber trotzdem danke
ich verwende den c++ builder compiler
Was läuft nicht. Die gezegten Beispiele müssten mit jedem C++ Compiler funktionieren, der sich an den Standard hält.
-
std::string gibt es bei mir nicht, obwohl stdio.h eingebunden worden ist.
-
maulwurf1655 schrieb:
std::string gibt es bei mir nicht, obwohl stdio.h eingebunden worden ist.
#include <string>
-
@Maulwurf
bist du dir sicher ob du C oder C++ programmieren willst?Der C++ Builder kann beides und noch Delphi, wenn das noch so wie bei den frühen Buildern ist.
Kannst du uns mal die in deinem Quelltext genutzten Header zeigen?
MfG f.-th.
-
gut danke.

ich habe es gerade nochmal ausprobiert und die stdio.h durch string ersetzt.
-
Wenn du dir nicht ganz, ganz, ganz arg sicher bist, dass dein buffer mit strcat nicht überläuft (also immer!), bitte
strncat
nehmen!
-
CopyFile(a, Dir + "\",...);das geht auch im Builder. Hier sind nur 2 Sachen nicht ganz sauber.
CopyFile(a, (Dir + "\\").c_str(), ...);EDIT: Was auch immer "a" ist. Wenn a ein AnsiString oder UnicodeString (oder String, was dann je nach Builderversion dann Ansi-, bzw UnicodeString wäre) musst
du das .c_str() aufrufen, da CopyFile ne WinApi Funktion ist, die nen const char array verlangt