unsigned char[] und string
-
Moin.
nun versuche ich es seit tagen zu verstehen und zu lösen.. es klappt nicht:
ich habeunsigned char buffer[255]; string neuerWert = "irgendwas"; // int start, laenge; // code void schreibeRein ( neuerWert, start,laenge){ // falls zu kurz while ( neuerWert.size() < laenge){ neuerWert += " "; } //falls zu lang if( neuerWert.size() > laenge){ neuerWert = neuerWert.substr(0,laenge); } // string in den Buffer schreiben :D und genau hier komme ich nicht weiter :DWäre schön, wenn mir jemand erklären könnte , wie ich das machen kann.
Ich habe schon mit substr und casts versucht, war nie das richtige dabei
beim googlen habe ich nichts gefunden oder es übersehen.
Herzlichen Dank Hanns
-
neuerWert.c_str()macht dir ein c-String draus und mit
memcopy(...)(evtl. auch mit
strcpy(...)kanst du das ganze in den buffer schieben.
-
HiFmeise,
die beiden *copy beginnen aber am Anfang des buffers.
Ich muss aber irgendwo in der Mitte anfangen.
Ich raffe es dennoch nicht

-
Du kannst deinen buffer an jeder beliebigen Stelle in den *copy funtionen übergeben, z.B.
memcpy(&buffer[3], ...). Schau dir evtl. auch strncpy an.
Wenn du den buffer allerdings später als string verwenden willst, pass auf, dass du das ganze mit '\0' abschließt.
-
JUHU,
ich habs gefressen.
Danke

-
int main(int args, char** argv) { const int LENGTH = 10; char buffer[LENGTH] = {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', '\0'}; std::cout << "buffer: " << buffer << std::endl; std::string s("ABC"); int start = 2; int length = 5; while (s.size() < length) s += " "; memcpy(&buffer[start-1], s.c_str(), length); std::cout << "buffer: " << buffer << std::endl; }
-
FMeise schrieb:
int main(int args, char** argv) { const int LENGTH = 10; char buffer[LENGTH] = {'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', '\0'}; std::cout << "buffer: " << buffer << std::endl; std::string s("ABC"); int start = 2; int length = 5; while (s.size() < length) s += " "; memcpy(&buffer[start-1], s.c_str(), length); std::cout << "buffer: " << buffer << std::endl; }Ja danke, so hat es auch bei mir geklapptm nur dass ich start bei 0 beginnen lasse, und mir noch ne Prüfung eingebaut habe, ob der String zu lang ist.
Nochmals vielen Dank, meine Zahnschmerzen sind vorbei.
Hanns