Unterschiedlich lange char Arrays kopieren
-
Ich wollte eigentlich Zweizeiler vermeiden weil ich das ganze zigmal hintereinander aufrufen muss und das auch noch immer wieder anders ohne wirkliche Regelmässigkeit, und das Ganze nicht zu Lasten der Codeübersicht und -lesbarkeit gehen sollte. Aber ich denke ich kann doch ganz gut damit leben. Danke für deine Hilfe!
-
Ein Einzeiler könnte zB so aussehen
char a[100] = {0};
-
Und dann füllt er das Teil mit Nullen? Muss ich gleich mal ausprobieren!
-
Wie wär's mit einem
std::vector<char> a(size, defaultvalue);
?
MfG Jester
-
Also
char a[100] = {0};
füllt den Array nicht.
std::vector<char> a(100, 0);
funktioniert zwar, aber wenn ich dann a per fwrite streamen will
std::vector<char> a(100, 0); FILE *out = fopen("C:\\out.txt", "wb"); fwrite(a, 1, 100, out);
sagt Visual Studio:
cannot convert from 'class std::vector<char,class std::allocator<char> >' to 'char'
No user-defined-conversion operator avaliable that can perform this conversion, or the operator cannot be called
-
dann versuch's mal mit &a[0] statt a ander Stelle. Aber für sowas würd ich Dir std::string und streams empfehlen. Damit geht sowas ganz einfach.
MfG Jester
-
Praetorian schrieb:
Also
char a[100] = {0};
füllt den Array nicht.
Laut Standard sollte es das aber, nennt sich zero-initialization. Der GCC und MSC macht das auch problemlos. Welchen Compiler hast du denn?
-
groovemaster schrieb:
Praetorian schrieb:
Also
char a[100] = {0};
füllt den Array nicht.
Laut Standard sollte es das aber, nennt sich zero-initialization. Der GCC und MSC macht das auch problemlos. Welchen Compiler hast du denn?
sagt Visual Studio
Ich würde auf VC 6.0 tippen
-
Also _mein_ VC 6 kann das :).
-
HumeSikkins schrieb:
Ich würde auf VC 6.0 tippen
VC 6 ist aber kein Compiler, höchstens 'ne IDE. :p
Ne, mal im ernst. Ist zwar schon 'ne Weile her, dass ich den MSC 6 benutzt hab und IIRC konnte der das.
-
Ja, es ist Visual Studio 6.0 (
). Stimmt, mit Nullen gehts tatsächlich. Aber gibt es auch zB eine five-initialization? Ich brauche das nämlich für beliebige Werte.
-
afaik geht sowas nur mit null, für beliebige Werte musst du dann schon eine der bereits genannten Lösungsvorschläge benutzen. Und wenn du sowas wie std::vector nicht nehmen willst (für nichtdynamische Arrays wärs dann boost::array), würde ich std::memset nehmen (doch Vorsicht, std::memset arbeitet byteweise und nicht elementweise). Oder du schaust dir mal std::fill an.
-
Aha. Und wie #include ich boost::array?
-
#include <boost/array.hpp>
?
Wenn ich das allerdings richtig sehe, hat boost::array keinen ctor, um alle Elemente auf einen bestimmten Wert zu initialisieren. Aber den könnte man ja auch nachschieben.