Funktion

C/C++

3 svar · 225 visningar · startad av Alpha II

Medlem sedan maj 20002 993 inlägg
Trådstart#1

Om jag har en funktion som tar en sträng soma argument, kan jag då på något sätt skicka en sträng till den som består av tecken och ints utan att skapa en tillfällig variabel och använda sprintf?

Medlem sedan maj 20002 993 inlägg
#2

Försöker förklara lite bättre:
Jag har skrivit en klass för att hantera en debug log. Den har funktionen add som lägger till en rad i en textfil.
Ibland måste den kunan skriva ut variabler från spelet, men hur skicka jag demn till en funktion som tar en char array som argument?

I Delphi kan man skriva ungefär så här:
Add('Antal rymdeskepp: ' +IntToStr(num_spaceships));
Hur gör jag det i c++?

Medlem sedan apr. 200318 inlägg
#3

Det finns en funktion som motsvarar IntToStr. Den heter itoa i c++. Det finns fler konverterings funktioner i inkulderingsfilen stdlib.h Dock ska jag väl säga att itoa inte ingår i ANSI/C++ men de flesta kompilatorer stödjer det tex VC++.
Läs mer på: http://www.cplusplus.com/ref/cstdlib/

Medlem sedan juli 2002581 inlägg
#4

Du kan ju använda templates:

template <typename A>
void Add ( A a )
{
  std::clog << a;
}

template <typename A, typename B>
void Add ( A a , B b)
{
  std::clog << a << b;
}

//etc.

Ett annat bra sätt är detta:

template<typename T>
std::string toString(T t)
{
  std::stringstream s;
  s << t;
  return s.str();
}

Och sedan använda toString när du anropar din funktion:

Add( "Hej på dig" + toStr(1234) );
261 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)