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

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

21

28.07.2003, 17:15

so:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <sstream> 
#include <string> 
#include <iostream> 
using namespace std; 
 
int main() 
{    
    string AlsString("3.14"); 
    stringstream Str; 
    Str << AlsString; 
    double d; 
    Str >> d; 
    cout << d << endl; 
}

22

28.07.2003, 17:19

geht das auch?

Quellcode

1
2
3
4
5
6
string s("abc");
stringstream ss;

ss << s << (int)34323123;

ss >> s;
Ein Gespenst geht um in Europa...

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

23

28.07.2003, 17:25

ja ich glaube das geht, hab (mal wieder ;D) meine Definition von std::stringstream verlegt :D aber müsste gehen, achja du musst glaube ich nicht zu int casten, da die zahl als int anerkannt wird vom operator.

das mit >> musste testen, ich hab das immer so gemacht

std::string mystring (der_stream_buffer);

24

28.07.2003, 18:44

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
FEExport void FELogError(const string ErrorText, 
                         const string SourceFile,
                         unsigned int LineNumber)
{
    stringstream Stream;
    string Text;
    
    Stream << "<b>Fehler:</b> " << ErrorText << " <i>(Quellcodedatei: " << SourceFile\
           << " in Zeile " << LineNumber << ")</i><br>";

    Stream >> Text;

    FELogWrite(Text);

    Beep(250, 250);
}


Kann man dieses Stream >> Text problemlos machen? Weil Text noch keine Länge hat. Hoffentlich schreibt er dann nicht über den Puffer hinaus.
Ein Gespenst geht um in Europa...

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

25

28.07.2003, 19:00

also ich denk eher das std::string beim füllen den puffer updatet auf die neue größe, falls er das nicht tut nimm den code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
FEExport void FELogError(const string ErrorText, const string SourceFile, unsigned int LineNumber) 
{ 
   stringstream Stream; 
   
   Stream << "<b>Fehler:</b> " << ErrorText << " <i>(Quellcodedatei: " << SourceFile << " in Zeile " << LineNumber << ")</i><br>"; 

   string Text(Stream); 

   FELogWrite(Text); 

   Beep(250, 250); 
}

26

28.07.2003, 19:21

Da gibt es viele möglichkeiten, itoa(), sprintf(), std::string::to_int_type(), std::stringstream. such dir eine aus. Beschreibungen und Diskusionen über diese Methoden findest du ihr im Forum oder auch z.B. im DSB.

PS: Die länge des String Puffers in std::string wird immer Dynamisch von der Klasse selber verwaltet. Deshalb brauch man sich um einen Pufferüberlauf auch keine sorgen machen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

27

28.07.2003, 19:31

@Patrick, ne das funktioniert nicht.
Ein Gespenst geht um in Europa...

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

28

28.07.2003, 19:36

@_progger_
bitte genauer :) bitte beeil dich sonst kann ich dir keine antwort geben, denn in 5 min kommt meine freundin ;) ;D

29

28.07.2003, 19:41

error C2664: '__thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(const cl
ass std::allocator<char> &)' : Konvertierung des Parameters 1 von 'class std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >' in 'const class std::allocator<char> &' nicht moeglich
Ursache: Konvertierung von 'class std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >' in 'const class std::allocator<char>' nicht moeglich
Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstruktors ist mehrdeutig
Ein Gespenst geht um in Europa...

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

30

28.07.2003, 20:34

@_progger_
bei welchem source? gib mal den mit dem du das ausprobiert hast und die zeile bitte kommentieren. 8)

Werbeanzeige