Unterschiedlich lange char Arrays kopieren
-
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.