<BøNilzen> Skrevet 27. februar 2004 Del Skrevet 27. februar 2004 (endret) Lager et program i C++ der jeg bruker "net send". Jeg bruker stringstream til å laste en streng som skal sendes. char Input[20]; stringstream ss; int x = 1; while(x=x) { cin.getline(Input,30); ss << "net send 10.10.10.10 " << Input; system(ss) } Noe liknende ihvertfall, har det på en annen data Dette virker første gangen, men så legger han til net send 10.10.10.10 + den nye inputen oppå den gamle, slik at den sender net send 10.10.10.10 melding 1 net send 10.10.10.10 melding 2. Kan jeg slete alt som stringstreamen inneholder? Edit : Postet før jeg var ferdig med å skrive Endret 27. februar 2004 av <BøNilzen> Lenke til kommentar
☀ ❄ Skrevet 27. februar 2004 Del Skrevet 27. februar 2004 Du kan bruke et lite "hack", slik: std::stringstream ss; std::string empty; ss.str(empty); Lenke til kommentar
<BøNilzen> Skrevet 27. februar 2004 Forfatter Del Skrevet 27. februar 2004 Takker så mye. Får prøve det. Lenke til kommentar
A_N_K Skrevet 27. februar 2004 Del Skrevet 27. februar 2004 Du trenger knapt stringstream her hvis jeg forstår deg rett? Du kan heller bruke noe sånt: std::string cmd("net send 10.10.10.10 "); (...) // Yada yada system((cmd + Input).c_str()) // system forventer en char * Litt morsomt at det skulle bli spørsmål om stringstream, jeg sliter litt med den klassen akkurat nå. Noen som vet den korrekte måten å resette en strøm (simpelthen å resette stringbufferen med str(enStreng) er ikke nok)? Lenke til kommentar
<BøNilzen> Skrevet 27. februar 2004 Forfatter Del Skrevet 27. februar 2004 Takker ANK. Får prøve det også. Har egentlig ikke kommet til stringstream enda, (leser Deitel&Deitel) så jeg kan nok ikke hjelpe deg. Lenke til kommentar
☀ ❄ Skrevet 27. februar 2004 Del Skrevet 27. februar 2004 Det eneste jeg kan tenke på, A_N_K, er å bruke std::stringstream::rdbuf() og så manipulere basic_stringbuf'en du får av det. Nøyaktig hva er det du vil oppnå (siden std::stringstream.str(const std::string&) ikke er tilstrekkelig)? Lenke til kommentar
A_N_K Skrevet 27. februar 2004 Del Skrevet 27. februar 2004 (endret) Jeg bruker den samme stringstreamen om igjen, og den må resettes. Selv om jeg setter stringbufferen til en ny streng, henger det igjen tilstand. Det jeg har kommet fram til er å kalle seekg(0) (start fra begynnelsen) og clear() (null ut feilbits). Edit: Forresten kan jeg kanskje komme med et lite tips relatert til innlesing av tekst. I forbindelse med en liten parser jeg var nødt til å skrive sleit jeg med å finne en komfortabel måte å lese inn linjer av arbitrær lengde, i standard C++. I parseren gjør jeg også matching ved hjelp av boost::regex som kan ta imot iteratorer, men std's filiterator tillater ikke backtracking så vidt jeg kan se. Heldigvis fant jeg ut at andre har slitt med samme problemet (som ikke er uvanlig) og det finnes en løsning i form av boost::spirit::file_iterator. Med denne gikk det fint å matche linje på linje med tekst (stringstream var til hjelp med å ekstrahere verdier) :] Meget praktisk. Endret 27. februar 2004 av A_N_K 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å