Ich möchte etwas Code umschreiben, der viele unsigned char
Arrays verwendet, statt std::vector<unsigned char>
Objekte zu verwenden. Das Problem, das ich habe, ist, dass diese derzeit verwendet werden, um die Daten zu speichern, die entweder in einen seriellen Port oder einen Socket-Schreibpuffer geschrieben werden, und die Bibliotheksfunktionen dafür entweder void*
oder unsigned char*
benötigen. Ein Beispiel für eine solche Funktion istKann ich Funktionen, die ein Array/Pointer-Argument verwenden, stattdessen mit einem std :: vector aufrufen?
WriteToSocketBuffer(unsigned char* pBuffer, int iSize);
so aktuell I-Code des Formulars haben
unsigned char* pArray = new unsigned char[iSize];
// populate array with data
WriteToSocketBuffer(pArray,iSize);
delete [] pArray;
Meine Frage ist folgende: Wenn ich meine Klasse ändern, um eine std::vector<unsigned char>
anstelle eines rohen Array haben können ich habe einfach meine Bibliothek Funktion aufrufen mit
std::vector<unsigned char> myVector;
WriteToSocketBuffer(&myVector[0],myVector.size());
im Vektor wirken auf die gleiche die Adresse des ersten Elements hat vorbei war in der Adresse des ersten Elements in einem rohen als vorbei Array. Ist es so einfach?
In C++ 11 ist, können Sie Verwenden Sie auch std :: array. –
Haben Sie es versucht? – KRyan
@DragoonWraith, wie versucht würde helfen? Dinge wie das Zulassen nicht zusammenhängender Repräsentation können es im Allgemeinen brechen und dennoch in grundlegenden Tests erfolgreich sein. – AProgrammer