Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » string in double konvertieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.06.2007, 08:51 Uhr
Darky



HI

ich will mit einem Projekt von VS 6 auf 2005 wechseln.

nun bekomme ich die Meldung


C++:
dcscptview.cpp(597) : warning C4996: 'sscanf' wurde als veraltet deklariert
        d:\programme\microsoft visual studio 8\vc\include\stdio.h(311): Siehe Deklaration von 'sscanf'
        Meldung: "This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details."



also schau ich in die neue MSDN nach einer Funktion die sscanf ersetz.
Aber irgendwie bin ich zu doof ich bekomme es nicht hin.
habe convert todouble , parse... versucht aber irgendwie klappt es nicht.


C++:

CString eingabe="0.55";
CString ausgabe="";
Double d_zahl=0;

sscanf(eingabe,"%lf", &d_zahl);// d_zahl =  System::Convert::ToDouble( eingabe);?????????


d_zahl=z_zahl+0.5;


ausgabe.Format("%lf", d_zahl);





mir geht es ansich nur um sscanf, kann mir bitte jemand mal auf die sprünge helfen wie ich die konvertierung in VS2005 mache(bitte mit allen include...........)
ich komm mit der neuen msdn nich klar
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.06.2007, 09:40 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


In der Meldung steht doch das du stattdessen lieber sscanf_s benutzen sollst

Die hat den Vorteil das du eine Größenangabe für den Buffer übergeben kannst.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.06.2007, 09:45 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


statt sscanf kannst du doch stringstreams verwenden...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.06.2007, 10:09 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Wobei ich mir gerade mal den geposten Code angesehen habe. Das gwht so überhaupt nicht. Du kannst nicht einfach mit sscanf in dein CString Object schreiben. Das ist doch kein einfaches Char Array sondern eine komplexe Klasse die intern den String selber verwaltet.

Was du willst ist die Format Funktion deines CString Obejcts.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.06.2007, 19:11 Uhr
xXx
Devil



C++:
#include <sstream>
CString strInput("0.55");
CString strOutput;

double number = 0.0;
std::ostringstream ss (strInput);
ss >> number;
strOutput.Format("%lf", (d_zahl += 0.5));
?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.06.2007, 19:20 Uhr
0xdeadbeef
Gott
(Operator)


Definiere _CRT_SECURE_NO_DEPRECATE oder _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES in den Projekteinstellungen als Präprozessormakros. Die Warnungen sind bedeutungslos, Microsoft versucht dich nur dazu zu überreden, doch bitte nur Code zu schreiben, der nur mit MS-Compilern kompilierbar ist.

Das erste Makro schaltet einfach die Warnungen aus, das zweite definiert die Symbole so um, dass jeweils die *_s-Versionen der Funktionen benutzt werden. Die sind dann weniger effizient, bieten aber bound-checking etc, was z.B. das Einschleusen von Code über Buffer-Overflows deutlich erschwert.

Ansonsten würd ich die Benutzung von atof vorschlagen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 12.06.2007 um 19:20 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.06.2007, 22:09 Uhr
Darky



Ich danke Euch für die schnelle Hilfe , werde atof benutzen.

@Guybrush Deine 2 post versteh ich nich so richtig, ich will aus dem String eine Double zahl haben und nicht umgekehrt -> mit sscanf funzt das super !!
oder was meinstest DU

regards Darky
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.06.2007, 22:19 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von 0xdeadbeef:
Definiere _CRT_SECURE_NO_DEPRECATE oder _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES in den Projekteinstellungen als Präprozessormakros. Die Warnungen sind bedeutungslos, Microsoft versucht dich nur dazu zu überreden, doch bitte nur Code zu schreiben, der nur mit MS-Compilern kompilierbar ist.



Auch wenn die Warnung selbst bei (_)snprintf, strncat und Co kommt - die wollen halt das man denen ihre tollen neudefinierten und erfundenen methoden benutzt, ganz einfach.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: