Warnings eliminieren, 2 Warnings bekomme ich nicht raus. Wer weiß weiter?
-
Mal wieder ich

ich wollte in meinem Programm alle WARNINGS eliminieren, allerdings komme ich bei den Letzten 2 nicht weiter. Wäre super wenn mir jm. helfen könnte
Danke Fill
______________________________________1.Warning C4244: 'Initialisierung': Konvertierung von 'std::streamoff' in 'long', möglicher Datenverlust [6]
Die Länge "lenght" benötige ich später um die Größe von Dateien zu vergleichen
long int groesse() // Dateigrößenbestimmung { ifstream in ("test.txt"); in.seekg (0, ios::end); // Pointer an Anfang u Ende long int length = in.tellg (); // Errechnet die Differenz => Größe return length; }**2. Warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [6]
**
Benutze ich an der Stelle aber "localtime_s" sagt er das keine Argumente übergeben werden können...hm...string dateiname () // Dateinamengenerierung mit Datum { ostringstream oss; time_t result = time(NULL); tm *dat = localtime(&result); // Zugriff auf die Member der Time-Struktur über *dat oss << dat->tm_mday <<"-"<< dat->tm_mon+1 <<"-"<< dat->tm_year+1900 << "_"<< dat->tm_hour <<"h-"<< dat->tm_min <<"m-"<< dat->tm_sec << "s"<<".txt"; string name = oss.str(); return name; }
-
die erste Warnung liegt wohl daran, dass std::streamoff für deinen Compiler grösser ausgelegt ist?
Wäre das evtl. eine Alternative?
std::streamoff groesse() // Dateigrößenbestimmung { ifstream in ("test.txt"); in.seekg (0, ios::end); // Pointer an Anfang u Ende std:streamoff length = in.tellg (); // Errechnet die Differenz => Größe return length; }siehe auch hier:
http://en.cppreference.com/w/cpp/io/streamoff
-
Zur zweiten Warnung:
Compiler schrieb:
To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [6]
-
Dir ist bewusst, das localtime_s andere Parameter und Rückgabewerte hat?
-
Quisslich schrieb:
Wäre das evtl. eine Alternative?
Leider kommt fast die gleiche Meldung bei einsatz von streamoff
-
DirkB schrieb:
Dir ist bewusst, das localtime_s andere Parameter und Rückgabewerte hat?
nein war ich mir leider nicht bewusst, da habe ich wohl zu flabsig nachgelesen...DANKE..ich schaue gleich noch einmal nach...bin noch nicht so fit in c++ da überließt man schnell mal was:)
-
FillColin schrieb:
Leider kommt fast die gleiche Meldung bei einsatz von streamoff
Fast die gleiche Meldung != die gleiche Meldung.
Wie ist denn die "fast gleiche" Meldung?
HINWEIS: Wenn Du ein portables Programm schreiben möchtest, verwendest Du localtime_s NICHT.
-
LordJaxom schrieb:
HINWEIS: Wenn Du ein portables Programm schreiben möchtest, verwendest Du localtime_s NICHT.
.. und schreibst am besten einen bösen Brief an MS und fragst warum solche idiotischen Warnungen per default enabled sind.
Kurt
-
Zur ersten Warnung:
Mit static_cast lässt sich die einfach "entfernen".
Aber Vorsicht: Du solltest eventuell vorher prüfen, ob der Wert von std::streamoff auch wirklich in deinen long int reinpasst, und eventuell entsprechend reagieren.
Oder du verwendest durchgehend std::streamoff, wie schon vorgeschlagen wurde.Zur zweiten Warnung:
Die ..._s Funktionen (da gibt's einige davon) sind eine Spezialanfertigung von MS, die vor Fehlern schützen sollen.
Mehr dazu:
http://msdn.microsoft.com/de-de/library/8ef0s5kh(v=vs.80).aspx
http://msdn.microsoft.com/de-de/library/ms175759(v=vs.80).aspx
-
streamoffsollte man nicht durch das Programm reichen, weil das nicht unbedingt ein Alias für einen Integer-Typ ist.streamsizeist das aber:
std::streamsize groesse() // Dateigrößenbestimmung { ifstream in ("test.txt"); in.seekg (0, ios::end); // Pointer an Anfang u Ende const std::streamsize length = in.tellg (); // Errechnet die Differenz => Größe return length; }