Gå til innhold

legge sammen tekst?


Anbefalte innlegg

Videoannonse
Annonse
Skrevet

bruk strcat til å legge til en tekst til tekst (konkatenering)

for å få en int til en streng kan man bruke sprintf. du kan f.eks gjøre

sprintf(min_char, "Score: %d", min_int) så slipper du strcat

Skrevet (endret)

sjekk dette utdraget fra man-siden til strcat:

...

The strings may not overlap, and the dest string must have enough space for the result.

...

det samme nevnes i sammenheng med sprintf og i sammenheng med andre funksjoner i disse familiene

 

.. vurder om du bør bruke strncat og snprintf o.l. i stedet

 

en annen ting som er greit er å kompilere med -g for så å bruke GDB og titte på backtracen (kall-stakken) når du får segfaults (antar at dette er grunnen til at programmet kræsjer) .. da ser du nemlig hva i koden som trigger kræsjen

Endret av dayslepr
Skrevet
      d,i    The  int  argument  is  converted to signed decimal notation.  The precision, if any, gives the minimum number of digits that

              must appear; if the converted value requires fewer digits, it is padded on the left with zeros. The default precision  is  1.

              When 0 is printed with an explicit precision 0, the output is empty.

 

sjekk også:

http://www.cplusplus.com/ref/cstdio/printf.html

 

eller standaren:

http://www.open-std.org/jtc1/sc22/wg14/www/standards

..direkte link: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf (denne bør du ha liggende til en hver tid)

Skrevet
std::cout<<"Score: "<<score;

5476737[/snapback]

Har ikke lest linkene dayslepr postet, men cout blir galt til det jeg skal gjøre. Bruker sdl_ttf, så det går ikke på den måten.

Skrevet

Du kan bruke string stream, men spørmålet er mer om du driver med C eller C++.

 

#include <sstream>

std::stringstream ss;
ss << "Score: " << score;

ss.str() <- for å få std::string
ss.str().c_str() <- for å få const char*

Skrevet
jeg bruker c++. Her er noen bokstaver slik at innlegget blir over 14 tegn

5485118[/snapback]

Vel da tror jeg eksempelet jeg ga ovenfor er aktuelt for ditt tilfelle.

Skrevet
char buf[20]; // Lag en string på stacken
char *dst;
char *score_str = "Score:";
unsgned int score = 32767; // Sett et tall som demo

memcpy(buf, score, 6); // Skriv "Score:" i de 6 første bokstavene
dst = &buf[6]; // Her skal tallet begynne å skrives
*dst = 0; // Sett denne til null, for å vise at det er en tom string
sprintf(dst, "%d", score); // Denne linjen kan du repetere for å endre score stringen.

printf(buf); // skriver til console vinduet

  • 4 uker senere...
Skrevet

Har ikke jobbet så mye med dette prosjektet i det siste, men jeg prøvde sprintf. I prosjektet mitt bruker jeg sdl og sdl_ttf og da virket denne ikke :( . Jeg får bare den klassiske windows-feilmeldinga som sier at det har skjedd noe galt med sdl_ttf og at jeg kan sende feilrapport og blablabla.

Skrevet (endret)

Prøvde nazguls forslag, men er ikke sikker på om jeg har forstått det rett...

 

Her er koden min:

...

#include <sstream> //for å legge sammen tekst
std::stringstream scoretemp;

...

scoretemp << "Score: " << orm[p].poeng;
scoretemp.str().c_str();
orm[p].scoretext=TTF_RenderText_Solid(scorefont, scoretemp , orm[p].farge);

...

 

Får feilmeldingen: invalid conversion from `void*' to `const char*'

 

EDIT: Liten leif

Endret av nahoy
Skrevet (endret)
(snip)

5639570[/snapback]

#include <sstream> //for å legge sammen tekst
std::stringstream scoretemp;

scoretemp << "Score: " << orm[p].poeng;
orm[p].scoretext=TTF_RenderText_Solid(scorefont, scoretemp.str().c_str(), orm[p].farge);

 

c_str() returnerer en const char*, den gjør ikke om selve objektet til en const char*

Endret av Nazgul

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...