std::char_traits::copy
-
Hi,
ich möchte von einem char* in einen anderen char* kopieren, und zwar mittels copy ( static char_type copy( char_type* dest, const char_type* src, std::size_t count );*
http://en.cppreference.com/w/cpp/string/char_traits/copy ). Aber was ich habe, akzeptiert er nicht:int main(int argc, const char *argv[]) { const char* INPUTFILE; const char* INPUTFILE_DATABASE; const char* OUTPUTFILE; static const char* copy(INPUTFILE, argv[1], argv[1]); static const char* copy(INPUTFILE_DATABASE, argv[2], argv[2]); static const char* copy(OUTPUTFILE, argv[3], argv[3]); return 1; }
Was stimmt denn nicht ? Muss ich size_t noch explizit angeben ?
Danke und Gruß!
-
Aha, er akzeptiert nicht. Tut er das schweigend?
-
Hallo,
mehrere Dinge:
1. Lies dir auf der von dir gelinkten Seite die Erklärung zu den Parametern dieser Funktion durch. Dann wirst du erkennen, dassdest
auf reservierten Speicher zeigen muss und dasscount
die Länge des Strings ist. Den Speicher reservieren kannst du mitstd::vector
(und dann mitv.data()
oder mit&v.front()
darauf zugreifen) oder ab C++17 mitstd::string
unds.data()
. Die Länge kannst du im Übrigen mitstd::char_traits::length
ermitteln.
2.static const char* copy(INPUTFILE, argv[1], argv[1]);
ist nicht die Grammatik, mit der man Funktionen aufruft. Ein grammatischer Aufruf sähe so aus:copy(INPUTFILE, argv[1], argv[1]);
(die Argumente stimmen jedoch nicht!). Den Rückgabewert kannst du hier außerdem getrost ignorieren, wie du bestimmt auch aus der Dokumentation entnommen hast.
3. Wenn das Programm korrekt beendet wurde, sollst du entweder 0 oderEXIT_SUCCESS
zurückgeben. 1 kennzeichnet oft einen Fehlerfall.Grüße
-
manni66 schrieb:
Aha, er akzeptiert nicht. Tut er das schweigend?
Mea culpa, hätte ich wohl tatsächlich noch anführen sollen.Fytch schrieb:
Hallo,
mehrere Dinge:
1. Lies dir auf der von dir gelinkten Seite die Erklärung zu den Parametern dieser Funktion durch. Dann wirst du erkennen, dassdest
auf reservierten Speicher zeigen muss und dasscount
die Länge des Strings ist. Den Speicher reservieren kannst du mitstd::vector
(und dann mitv.data()
oder mit&v.front()
darauf zugreifen) oder ab C++17 mitstd::string
unds.data()
. Die Länge kannst du im Übrigen mitstd::char_traits::length
ermitteln.
2.static const char* copy(INPUTFILE, argv[1], argv[1]);
ist nicht die Grammatik, mit der man Funktionen aufruft. Ein grammatischer Aufruf sähe so aus:copy(INPUTFILE, argv[1], argv[1]);
(die Argumente stimmen jedoch nicht!). Den Rückgabewert kannst du hier außerdem getrost ignorieren, wie du bestimmt auch aus der Dokumentation entnommen hast.
3. Wenn das Programm korrekt beendet wurde, sollst du entweder 0 oderEXIT_SUCCESS
zurückgeben. 1 kennzeichnet oft einen Fehlerfall.Grüße
Danke! Ich werde mich daran mal orientieren und mich bestimmt wieder melden