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?
Funktion
3 svar · 217 visningar · startad av Alpha II
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++?
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/
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) );