Sonderfall string-umwandlung ( Cast-Problem ?)
-
Moin,
ich möchte gern mein BTI_BYTE array in einen String wandelntypedef unsigned char BTI_BYTE; //.... BTI_BYTE m_dataBuf[255]; //.. using namespace std; //... // hier die Wandelmethode string btrieve::datenBuffer(){ string temp; // die nächste Zeile wäre mein Ziel, aber wie?? // Klar ist mir, das string nen Zeiger auf char-Array erwartet, ich aber ein unsigned char - Array liefere // temp =(??????)m_dataBuf; // hab mir dann so geholfen, nicht schön, aber geht int i; for ( i = 0,temp=""; i< (int)sizeof(m_dataBuf); i++) { temp += (char) m_dataBuf[i]; } return temp; }Danke für Hinweise
Hanns
-
string temp(m_dataBuf);
-
string temp( reinterpret_cast< const char* >( m_dataBuf ), sizeof( m_dataBuf ) );
-
HannsW schrieb:
int i; for ( i = 0,temp=""; i< (int)sizeof(m_dataBuf); i++) {Wäre das nicht was für dailywtf?

-
groovemaster schrieb:
HannsW schrieb:
int i; for ( i = 0,temp=""; i< (int)sizeof(m_dataBuf); i++) {Wäre das nicht was für dailywtf?

what the hell means dailywtf?

wasn da so komisch dran

Aber immer gerne bereit, etwas Freude in das Leben anderer zu geben
-
-
HannsW schrieb:
wasn da so komisch dran

Nun, komisch darin ist, dass du
sizeof(m_dataBuf)explizit nach int castest, weil du i so definiert hast. Wäre es nicht einfacher, i gleich mit Typ size_t zu definieren.

Zudem ist
temp=""vollkommen unnötig.
-
groovemaster schrieb:
Nun, komisch darin ist, dass du
sizeof(m_dataBuf)explizit nach int castest, weil du i so definiert hast. Wäre es nicht einfacher, i gleich mit Typ size_t zu definieren.

Ohne den cast auf int habe ich aber nen compiler-fehler bekommen.Gck Dir mal an, was m_DataBuf in echt ist :
typedef unsigned char BTI_BYTE; //.... BTI_BYTE m_dataBuf[255]; //..wenn ich wie gehabt
int i; string temp; for ( i = 0,temp=""; i< sizeof(m_dataBuf); i++) { temp += (char) m_dataBuf[i]; }schreibe, erhalte ich diesen Fehler:
btrieveClass.cc: In member function `std::string btrieve::datenBuffer()': btrieveClass.cc:126: warning: comparison between signed and unsigned integer expressionsZudem ist
temp=""vollkommen unnötig.
und mit dem temp="" hast DU REcht, ich habs nochmal nachgelesen:
A string object may defined without an initializing value, in which case its initial value is an empty string (zero length, no characters):
-
HannsW schrieb:
Ohne den cast auf int habe ich aber nen compiler-fehler bekommen.
groovemaster schrieb:
Wäre es nicht einfacher, i gleich mit Typ size_t zu definieren.
btw:
C-Casts sollte man in C++ generell nicht verwenden.