Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Chef-Koch

Treue Seele

  • »Chef-Koch« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Ulm

  • Private Nachricht senden

1

22.01.2008, 16:41

WORD to std::string

heyho ich suche einen weg ein WORD in ein string (oder const char*) zu konvertieren.
Hab schon SuFu benutzt, aber nix gefunden. Des hab ich auch schon probiert, hat allerdings mir nur random Zeichen ausgegeben:

C-/C++-Quelltext

1
     string Monat =(char*) &Zeit.wMonth; 


Zeit ist vom typ SYSTEMTIME und wMonth ein Word.
weiß einer eine Lösung, oder wie man die Systemzeit anders rausbekommen kann?

danke,
Chef-Koch

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

22.01.2008, 16:45

Die C++-Typische Lösung ist die Verwendung von std::stringstream.
@D13_Dreinig

Chef-Koch

Treue Seele

  • »Chef-Koch« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Ulm

  • Private Nachricht senden

3

22.01.2008, 17:01

kannst du mir ein Beispiel geben? Meine Versuche mit Stringstream gingen alle daneben:

C-/C++-Quelltext

1
2
    stringstream Monat(Zeit.wMonth);
    stringstream Monat = Zeit.wMonth; // alles falsch .. :(


danke :D

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

22.01.2008, 17:10

Versuchs mal mit dem Operator<< und >>.
@D13_Dreinig

Chef-Koch

Treue Seele

  • »Chef-Koch« ist der Autor dieses Themas

Beiträge: 115

Wohnort: Ulm

  • Private Nachricht senden

5

22.01.2008, 17:33

C-/C++-Quelltext

1
2
     stringstream Monat;
    Monat << Zeit.wHour; // Das klappt!


das klappt zwar jetzt, aber das Problem bleibt, denn sobald ich es ausgeben will mit

C-/C++-Quelltext

1
       cout << (char*) &Monat << endl; 
kommen wieder die komischen Zeichen.
Das geht auch alles nicht:

C-/C++-Quelltext

1
2
 cout << Monat << endl
cout << Monat.str << endl;


:(

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

6

22.01.2008, 17:44

ich glaub er meint:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// Zum reinspeichern

std::istringstream is("Text");
// oder

is.str("Text");

// Zum lesen:

is >> MeinBufferFuerDasErsteWort >> MeinBufferFuerDasZweiteWort;
// oder

is.getline(MeinBufferFuerDieGanzeZeile", MaximaleBufferGroesse);





// Für Zahlen:
istringstream is("10 200 34 12");
int Zahl1;
int Zahl2;
int Zahl3;
int Zahl4;

is >> Zahl1 >> Zahl2 >> Zahl3 >> Zahl4;
cout << Zahl1 << endl << Zahl2 << endl <<  Zahl3 << endl<< Zahl4;



//Ausgabe:

// 10

// 200

// 34

// 12

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

22.01.2008, 17:46

Beispiel:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template<typename T, typename U>
T lexical_cast( const U& value )
{
    std::stringstream converter;
    T result;

    if ( !( converter << value && converter >> result && ( converter >> std::ws ).eof() ) )
        throw std::logic_error( "fehler beim konvertieren" );

    return result;
}

int main()
{
    short x = 100;
    std::string str = lexical_cast< std::string >( x );
    std::cout << str.c_str();
    std::cin.get();
}
@D13_Dreinig

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

8

22.01.2008, 17:49

Zitat von »"David_pb"«

Beispiel:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template<typename T, typename U>
T lexical_cast( const U& value )
{
    std::stringstream converter;
    T result;

    if ( !( converter << value && converter >> result && ( converter >> std::ws ).eof() ) )
        throw std::logic_error( "fehler beim konvertieren" );

    return result;
}

int main()
{
    short x = 100;
    std::string str = lexical_cast< std::string >( x );
    std::cout << str.c_str();
    std::cin.get();
}



Das is natürlich die elegante Variante ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

22.01.2008, 17:50

Zitat von »"Databyte"«


Das is natürlich die elegante Variante ;)


Jo, und boost::lexical_cast ist noch eleganter! :p
@D13_Dreinig

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

10

22.01.2008, 17:52

Zitat von »"Chef-Koch"«



das klappt zwar jetzt, aber das Problem bleibt, denn sobald ich es ausgeben will mit

C-/C++-Quelltext

1
       cout << (char*) &Monat << endl; 
kommen wieder die komischen Zeichen.
:(


Das liegt überigens daran, das du cout einen char-Zeiger übergibt.
Er denkt also er kriegt ne Zeichenkette die mit '\0' aufhört.
Weil aber deine Zahl binär is, gibt er komische zeichen aus..

Werbeanzeige