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, dassdestauf reservierten Speicher zeigen muss und dasscountdie 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::stringunds.data(). Die Länge kannst du im Übrigen mitstd::char_traits::lengthermitteln.
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_SUCCESSzurü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, dassdestauf reservierten Speicher zeigen muss und dasscountdie 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::stringunds.data(). Die Länge kannst du im Übrigen mitstd::char_traits::lengthermitteln.
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_SUCCESSzurückgeben. 1 kennzeichnet oft einen Fehlerfall.Grüße
Danke! Ich werde mich daran mal orientieren und mich bestimmt wieder melden
