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

Gon

Treue Seele

  • »Gon« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Nahe München

Beruf: Schüler (9. Klasse Gymnasium)

  • Private Nachricht senden

1

31.10.2008, 15:47

[Erledigt] Zeilenumbruch bei sout

ich habe bei meinem Teilchenbeschleuniger folgende zeilen, die einen text ausgeben sollen:

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
// CGame Instanz für Zugreifen auf Variablen

    CGame Game;   

    // werte aus ini-datei lesen

    char ini[] = "C:\\Dokumente und Einstellungen\\Eigene Dateien\\Projekte\\Projekte\\Teilchenbeschleuniger\\Data\\TB.ini";

    Game.m_Steps    = GetPrivateProfileInt("Settings", "Schritte", 0, ini);
    Game.m_Speed    = GetPrivateProfileInt("Settings", "Tempo", 0, ini);
    Game.m_Duration = GetPrivateProfileInt("Settings", "Dauer", 0, ini);

    m_Total = ((Game.m_Steps * Game.m_Speed) + ((Game.m_Steps - 1) * Game.m_Duration));

    SDL_Color clrBlack = {0, 0, 255}; // Farbe der Schrift


    SDL_Rect dstTextKoordinaten = {100, 100, 0, 0}; // Koordinaten des Texts



    std::stringstream sout;

    // Text

    sout << "Anzahl der Schritte: " << Game.m_Steps << "  Schritte" << "Zeitraum zwischen zwei Schritten: " << Game.m_Duration << "  Millisekunden" << "Dauer eines Schritts: " << Game.m_Speed << "  Millisekunden" << "Gesamtdauer:  " << m_Total << "  Sekunden";

    // Rendern1

    m_pSText = TTF_RenderText_Solid(m_pFont, sout.str().c_str(), clrBlack); 

    ::SDL_BlitSurface(m_pSText, NULL, g_pFramework->m_pScreen, &dstTextKoordinaten);


nur will ich, dass bei

C-/C++-Quelltext

1
2
// Text

    sout << "Anzahl der Schritte: " << Game.m_Steps << "  Schritte" << "Zeitraum zwischen zwei Schritten: " << Game.m_Duration << "  Millisekunden" << "Dauer eines Schritts: " << Game.m_Speed << "  Millisekunden" << "Gesamtdauer:  " << m_Total << "  Sekunden";

nach "Schritte", "Millisekunden" und nochmal "Millisekunden" ein, bzw. mehrere zeilenumbrüche sind.

wenn ich das escape-zeichen "/n" z.b. nach Schritte schreibe, also so:

C-/C++-Quelltext

1
sout << "Anzahl der Schritte: " << Game.m_Steps << "  Schritte /n";

dann schreibt er das "/n" immer auch hin, er denkt also, es gehört zum string dazu :?

und wenn ich es so schreibe:

C-/C++-Quelltext

1
sout << "Anzahl der Schritte: " << Game.m_Steps << "  Schritte" << /n;

dann gibt er immer diesen fehler aus:

C-/C++-Quelltext

1
error C2059: Syntaxfehler: '/'



wie kann ich hier einen zeilenumbruch machen?

vielen dank im voraus,

mfg Gon

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

31.10.2008, 15:49

<<"test text\n"<<"\n"
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Gon

Treue Seele

  • »Gon« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Nahe München

Beruf: Schüler (9. Klasse Gymnasium)

  • Private Nachricht senden

3

31.10.2008, 15:53

das hab ich schon ausprobiert, aber dann steht das "/n" immer neben dem text.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

31.10.2008, 15:54

Zitat von »"Gon"«

das hab ich schon ausprobiert, aber dann steht das "/n" immer neben dem text.


Du sollst auch nicht "/n" sondern "\n" verwenden.
@D13_Dreinig

Gon

Treue Seele

  • »Gon« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Nahe München

Beruf: Schüler (9. Klasse Gymnasium)

  • Private Nachricht senden

5

31.10.2008, 16:02


(Link)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

31.10.2008, 16:16

Das ist ja wieder was andres. Dann muss dein "sout" eben ein "\n" berücksichtigen und entsprechend behandeln.
@D13_Dreinig

Gon

Treue Seele

  • »Gon« ist der Autor dieses Themas

Beiträge: 262

Wohnort: Nahe München

Beruf: Schüler (9. Klasse Gymnasium)

  • Private Nachricht senden

7

31.10.2008, 16:22

aber wie mache ich es, dass mein sout das \n behandeln kann?

8

31.10.2008, 16:25

Meinst du nicht, dass TTF_RenderText_Solid() unfähig ist, einen Zeilenumbruch darzustellen? Vielleicht musst du das manuell machen, also zwei Mal zeichnen.

9

01.11.2008, 14:57

Also an sout wird es wohl kaum liege (warum auch Newlin ist ganz normal im Zeichensatz verankert?!) sondern einfach daran das TTF_Render_*-Funktionen einfach nicht mit NewLines klar kommen?
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

10

01.11.2008, 17:47

Zitat von »"Deviloper"«

Also an sout wird es wohl kaum liege (warum auch Newlin ist ganz normal im Zeichensatz verankert?!) sondern einfach daran das TTF_Render_*-Funktionen einfach nicht mit NewLines klar kommen?

woher soll TTF_Render_*-Funktion wissen wieviel Zeilenabstand dass Du willst, so als Beispiel? :roll:

Du musst ein zweites Surface mit der TTF_Render_*-Funktion zeichnen und unter der ersten hinzeichnen.

Werbeanzeige