cptCory Skrevet 6. mars 2009 Del Skrevet 6. mars 2009 (endret) jeg er ny i C++, veldig ny. Så vet da egentlig ikke hva jeg leter etter så lager egen tråd selv om dette skulle finnes fra før. Her er problemet: Eks: int a = 4; int b = 5; int ab = (a ettEllerAnnet b); // vil at variabelen skal holde tallet 45 Hvordan får jeg lagt disse tallene sammen på denne måten? finner ingen operator for det... Håper dere kan hjelpe. Endret 6. mars 2009 av CoreTEC Lenke til kommentar
Laserbeam Skrevet 6. mars 2009 Del Skrevet 6. mars 2009 Nå kan ikke jeg mye c++ jeg helller, men kan du ikke prøve på å konverte vært tall til en char og så kombinere dem til en string? Og deretter konvertere den stringen tilbake til int? Lenke til kommentar
cptCory Skrevet 6. mars 2009 Forfatter Del Skrevet 6. mars 2009 Så langt har jeg ikke kommet enda, så da får jeg lese litt til Lenke til kommentar
cptCory Skrevet 6. mars 2009 Forfatter Del Skrevet 6. mars 2009 takk så mye! blir nesten flau her nå... Lenke til kommentar
PerB Skrevet 6. mars 2009 Del Skrevet 6. mars 2009 Ingen grunn til å være flau. Har B verdi 10 eller høyere vil metoden ikke virke. Riktig metode er å konvertere begge integer til string og så slå dem sammen for derpå å konvertere dem til integer igjen. Evt håndtere begge variable som string hele tiden. Lenke til kommentar
cptCory Skrevet 6. mars 2009 Forfatter Del Skrevet 6. mars 2009 Slipper unna med det regnestykket denne gang, både a og b er fra 0-9 hverken mer eller mindre. String og konvertering kommer vel etterhvert, ser på noen videoer og leser litt materiale attåt på 3dbuzz. Håper jeg kommer meg unna med at sene timer sløver hjernen Lenke til kommentar
GeirGrusom Skrevet 6. mars 2009 Del Skrevet 6. mars 2009 (endret) Dersom du er interessert allikevel, finnes det to andre måter som gjør at tallene kan være større enn 9. Først med string, der en gjør om tall til tekst, men den er ikke så interessant synes jeg. Den andre er den matematiske måten: ab = (int)(a * pow(10, 1 + (int)pow(b, 1.0 / 10.0)) + b); edit: tenkte feil Endret 6. mars 2009 av GeirGrusom Lenke til kommentar
Sokkalf™ Skrevet 6. mars 2009 Del Skrevet 6. mars 2009 (endret) int a = 4; int b = 5; printf("%c%c\n", a + 0x30, b + 0x30); Er forsåvidt C, men er ihvertfall en kjapp og dirty måte å forvandle en (single digit) int til noe som begynner å ligne på en string.. Endret 6. mars 2009 av Sokkalf^ Lenke til kommentar
GeirGrusom Skrevet 6. mars 2009 Del Skrevet 6. mars 2009 int a = 4, b = 5; int ab = 0; char dst[] = {0, 0, 0}; sprintf(dst, "%c%c", a + 0x30, b + 0x30); ab = atoi(dst); I C? Lenke til kommentar
Dead_Rabbit Skrevet 6. mars 2009 Del Skrevet 6. mars 2009 Jeg hadde brukt stringstreams. stringstream ss; ss << 4 << 5; string str = ss.str(); Lenke til kommentar
LostOblivion Skrevet 6. mars 2009 Del Skrevet 6. mars 2009 Rart at std::string ikke har constructors for primitivene og operator + for appending...ellers ville jo problemer som dette vært svært trivielle å løse. int main() { int a = 4; int b = 5; std::string fortyfive = string(a) + string(b); /* Denne. */ std::string fiftyfour = string() + a + b; /* Eller denne. */ return 0; } Lenke til kommentar
Sokkalf™ Skrevet 7. mars 2009 Del Skrevet 7. mars 2009 int a = 4, b = 5; int ab = 0; char dst[] = {0, 0, 0}; sprintf(dst, "%c%c", a + 0x30, b + 0x30); ab = atoi(dst); I C? Når man likevel bruker *printf er det forsåvidt lite poeng i å gjøre det på den måten char dst[] = {0, 0, 0}; sprintf(dst, "%i%i", a, b); ab = atoi(dst); Lenke til kommentar
GeirGrusom Skrevet 7. mars 2009 Del Skrevet 7. mars 2009 Haha! ja, det er sant! Føler meg veldig dum her nå ^^ Lenke til kommentar
zotbar1234 Skrevet 7. mars 2009 Del Skrevet 7. mars 2009 (endret) Rart at std::string ikke har constructors for primitivene og operator + for appending...ellers ville jo problemer som dette vært svært trivielle å løse.int main() { int a = 4; int b = 5; std::string fortyfive = string(a) + string(b); /* Denne. */ std::string fiftyfour = string() + a + b; /* Eller denne. */ return 0; } Det er nok litt ulurt -- forskjellig semantikk for std::string + <integral type> og array of const char + <integral type>? Det blir mange bra overraskelser da. Når det gjelder std::string(<tall>), hvordan skal tallet representeres? Si, gitt -12343.6571, hva skal innholdet i stringen være? Jeg kunne godt tenkt meg "-12'343.66", men det er jo bare en av mulighetene. edit: grammatikkfeil Endret 8. mars 2009 av zotbar1234 Lenke til kommentar
Dead_Rabbit Skrevet 7. mars 2009 Del Skrevet 7. mars 2009 (endret) Og i tillegg så kan man jo tenke seg at std::string er en slags container og det er derfor ikke helt ulogisk at std::string(n) allokerer n elementer til stringen istedenfor å konvertere tallet til en string. Dette er jo det f.eks. std::list og std:.vector gjør. Endret 7. mars 2009 av Dead_Rabbit Lenke til kommentar
TheMaister Skrevet 6. april 2009 Del Skrevet 6. april 2009 En funksjon i C++ for å gjøre int om til en string. std::string stringify(int x) { std::ostringstream o; o << x; return o.str(); } f.eks a=1; b=2; string c = stringify(a) + stringify(b); trenger <string> og <sstream> Lenke til kommentar
GeirGrusom Skrevet 6. april 2009 Del Skrevet 6. april 2009 Det kunne jo vært en std:str_cast klasse for eksempel, men det er ikke egentlig viktig, det finnes jo allerede funksjoner for dette. Hvis en skal henge seg opp i språk semantikken, så er vel ikke dette akkurat et problem område. Men er det egentlig raskere å lage to strings, legge dem sammen og deretter parse dem, enn å bruke et 10-ende rotuttrykk? Har ikke noen C++ compiler tilgjengelig på denne maskinen, så jeg får ikke testet, men logikken min sier at strings er mest effektivt, men jeg har fått overraskelser på sånne ting før. Lenke til kommentar
Mr.Garibaldi Skrevet 6. april 2009 Del Skrevet 6. april 2009 Fordelen av å ha det i standarden er at det er en ganske vanlig operasjon som da kunne vært optimalisert bedre enn når alle gjør det på forskjellige måter. (Nå kan sikkert compilerne optimisere det likevel, men...) Lenke til kommentar
Hans_Henrik Skrevet 16. april 2009 Del Skrevet 16. april 2009 (endret) EDIT: original-koden her funket ikke <.< denne fungerer #include <iostream> #include <stdlib.h> int main() { int a=4; int b=5; char MyChar [1]; std::string MyString; itoa(a, MyChar, 10); MyString +=MyChar; itoa(b, MyChar, 10); MyString +=MyChar; std::cout << MyString; return 0; } PS: det er sikkert bedre løsninger postet her allerede Endret 17. april 2009 av Hans_Henrik 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å