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.