c++ cast von mysql_row nach Boolean, int, etc
-
Hallo,
ich lerne gerade C++ und stehe vor folgendem Problem:
Gibt es eine elegante Lösung einen direkten Cast von einem Ergebnis einer SQL-Abfrage durchzuführen?Also ich denke da an sowas wie:
//[...hier realconnect etcetera pepe..] mysql_row = mysql_fetch_row (mysql_res); bool is_wahr; int nein_echt; std::string kann_nicht_sein; is_wahr=boolcast(mysql_row[1]);//Spalte eins der SQL-Tabelle enthaelt entweder 0 oder 1 nein_echt=intcast(mysql_row[3]);//Spalte 3 immer Zahlen kann_nicht_sein=strcast(mysql_row[0]);//Spalte 0 immer char[32]
Leider weiss ich nicht von welchem Typ mysql_row ist, und auch nicht wie man genau ein Casting in C++ macht.
Gruss
Robin
-
Nachtrag:
Im Moment mache ich es so:
bool isbool(string temp) { if (temp=="1")return true; return false; };
und
per atoi(mysql_row[x]);
Beim atoi kann man sicher nichts mehr optimieren.
Falls jemand eine Idee hat die isbool Funktion zu optimieren, dann bitte posten.
Falls nicht, werde ich es wohl so lassen.Gruss
R
-
bololo77 schrieb:
bool isbool(string temp)
{
if (temp=="1")return true;
return false;
};
[/cpp]Ist wahr immer 1?
Zumindest in C/C++ ist true alles, was nicht 0/false istif (temp != "0")return true; return false;
-
so wie ich's in erinnerung habe, ist 'mysql_row' ein array aus nullterminierten strings. bei bools, die immer "0" oder "1" sein können, könnt gehen:
bool isbool (char *b)
{
return b[0]-'0';
}
-
Die C-API von MySQL gibt immer eine string zurück.
Es gibt eine API-Funktion welche Dir den Spaltentype liefert. Dadirch kannst Du dann selbst entscheiden welchen Type Du zurückgibst.
-
Klingt fast nach "Programmiere dir doch einen Caster"....
Naja, wenns sich nicht vermeiden laesst, muss ich das wohl tun, ich probier aber erstmal net's Lösung...Gruss
R