buskmann Skrevet 22. september 2005 Del Skrevet 22. september 2005 Kan noen forklare meg hvorfor dette ikke fungerer? vector <char> buffer; int beta = 4; char start[5] = {'S','T','A','R','T'}; // legg start til i bufferet copy(start, start + 5, buffer.end()); // og kanskje beta if (beta < 5){ copy((char*)&beta , ((char*)&beta) + 4, buffer.end()); } Lenke til kommentar
prebenl Skrevet 22. september 2005 Del Skrevet 22. september 2005 buffer.end() henviser til adresssen bak siste element i buffer, så det er intet lurt sted å kopiere chars til. buffer.begin() ville vært et mer fornuftig valg. Lenke til kommentar
Dead_Rabbit Skrevet 22. september 2005 Del Skrevet 22. september 2005 Jepp. Det blir en buffer overflow Lenke til kommentar
buskmann Skrevet 22. september 2005 Forfatter Del Skrevet 22. september 2005 Det er på den første ledige plassen jeg ønsker å sette dette inn. Det må være bak siste (opptatte) plass, så vidt jeg forstår. Når vectoren ikke inneholder noen elementer, så mener jeg buffer.begin() og buffer.end() pekker til samme plassen. buffer.begin() fungerer vel på den første, men ikke på den andre, da den hele tiden vil "peke" til 'S'. Eller har jeg misforstått noe alvorlig? Lenke til kommentar
Peter Skrevet 22. september 2005 Del Skrevet 22. september 2005 Det er på den første ledige plassen jeg ønsker å sette dette inn. Det må være bak siste (opptatte) plass, så vidt jeg forstår. Når vectoren ikke inneholder noen elementer, så mener jeg buffer.begin() og buffer.end() pekker til samme plassen. buffer.begin() fungerer vel på den første, men ikke på den andre, da den hele tiden vil "peke" til 'S'. Eller har jeg misforstått noe alvorlig? Jeg tror det du sier stemmer. dersom vector.size() == 0, så er vector.begin() == vector.end(); Men så setter jo du inn noen elementer først, før du prøver å sette inn noen elementer i plassen etter siste element (som antakelig er udefinert) Bytt ut vector.end() med back_inserter(vector) Merk: jeg bruker vector som navn der du bruker buffer. back_inserter er dokumentert her: http://msdn.microsoft.com/library/default....ackinserter.asp Lenke til kommentar
hishadow Skrevet 23. september 2005 Del Skrevet 23. september 2005 (endret) Kanskje du burde bruke en std::string i stedet. Den har jo også støtte for iteratorer, bedre håndtering av streng-lengder og tilordning av char*. Endret 23. september 2005 av hishadow Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå