Mailinglist Archive: opensuse-programming-de (140 mails)

< Previous Next >
Re: Konvertierung von unsigned char* auf signed char*
Hi!

----

#include <iostream>
#include <string>

int main()
{
// char nach unsigned char
// ***********************

// irgendwas -> irgendwas2
char* irgendwas = "Blahblah";

unsigned char* irgendwas2 = new unsigned char(std::strlen( irgendwas
));

// Test-Ausgabe
std::cout << irgendwas << std::endl;

// Konvertieren
for( unsigned int i = 0; i < std::strlen( irgendwas ); i++ )
{
irgendwas2[i] = static_cast<unsigned char>( irgendwas[i] );
}

// Test-Ausgabe 2
std::cout << irgendwas2 << std::endl;

// unsigned char nach char
// ***********************

// irgendwas2 -> irgendwas3
char* irgendwas3 = new char(8);

// Achtung: strlen hier nicht anwendbar
for( int i = 0; i < 8; i++ )
{
irgendwas3[i] = static_cast<char>( irgendwas2[i] );
}

// Test-Ausgabe 3
std::cout << irgendwas3 << std::endl;

return 0;
}

---

Bringt bei mir die Ausgabe
Blahblah
Blahblah
Blahblah

Das ist jetzt quick'n'dirty per Hand gehackt, irgendwo gibt's bestimmt
eine elegantere Funktion für sowas (gibt's immer :) ). Du musst im
Fall unsigned char nach char mit der Größe aufpassen. Da Du die aber
in Hochkommas zuweist

s[0]->setName("EinName");

kannst Du vorher die Größe ausrechnen. Zu den anderen Sachen gibt's
schon genug Antworten ;)

CU
Martin



< Previous Next >