000
03.01.2004, 20:40 Uhr
(un)wissender
Niveauwart
|
C++: |
template<typename string_type> int TCPSocket::writeString( const string_type &stringToWrite ) { unsigned int nLetters = 0; for(typename string_type::iterator i = stringToWrite.begin(); i != stringToWrite.end(); ++i, ++nLetters) { if(write(&*i, sizeof(*i)) == SOCKET_ERROR) encodeWinsockErrorAndThrowException(); } return nLetters; }
|
So, das ist der code. Ich muss wissen, wie groß in Bytes der Inhalt des jeweiligen Iterators ist, ich habe hier mit sizeof gemacht, aber das geht, glaube ich, nur zu Compilezeit, oder? Wenn es auch dynamisch geht, dann hat sich meine Frage erledigt. Hintergrund ist der, das z.B. UTF-8 Letter nicht immer die gleiche Größe haben, darum kann die Größe der einzelnen Letter im String variiieren. Kann man eigenlich dieses &*i cooler schreiben? (Ich möcht den Pointer, den der Iterator kapselt, haben.)
Die Signatur von write() ist:
C++: |
int TCPSocket::write( const void *pData, unsigned int nBytes, unsigned int flags = 0 )
|
-- Wer früher stirbt ist länger tot. Dieser Post wurde am 03.01.2004 um 21:07 Uhr von (un)wissender editiert. |