[c++]Numerieke waarde van een INT in een STRING

Pagina: 1
Acties:

  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 01-02 20:46

dawuss

gadgeteer

Topicstarter
Ik heb dus twee INT's met bijvoorbeeld de waarden 128 en 064 nou wil ik een string hebben die "128064" als waarde heeft.

Daarna wil ik ook de waarde van de string weer terug kunnen zetten in twee INT's. Hoe kan ik dat doen?

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Zoek eens naar format options voor integers.
Het is fijn als je aangeeft wat je al zelf hebt gedaan.
Nu lijkt het op en script request en die zijn ernstig ongewenst.
Op maandag 27 mei 2002 15:55 schreef dawuss het volgende:
Ik heb dus twee INT's met bijvoorbeeld de waarden 128 en 064 nou wil ik een string hebben die "128064" als waarde heeft.

Daarna wil ik ook de waarde van de string weer terug kunnen zetten in twee INT's. Hoe kan ik dat doen?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

daarnaast kan een INT nooit 064 bevatten.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Het zal wel helemaal fout zijn hoor en te simpel gedacht, maar als je beide eerst converteert naar een string en dan bij elkaar optelt zou je je gewenste effect moeten krijgen.

Maar hoe zie jij het voor je als je weer wilt opsplitsen? Zijn die int's altijd aan elkaar gelijk qua lengte ofzo?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op maandag 27 mei 2002 16:07 schreef Glimi het volgende:
Het zal wel helemaal fout zijn hoor en te simpel gedacht, maar als je beide eerst converteert naar een string en dan bij elkaar optelt zou je je gewenste effect moeten krijgen.

Maar hoe zie jij het voor je als je weer wilt opsplitsen? Zijn die int's altijd aan elkaar gelijk qua lengte ofzo?
Simpel while loopje op de lengte van de nummer-string.
elke keer 3 karakters eraf snoepen en dat dan omzetten naar letter.
Vandaar natuurlijk ook de vraag die hij vanmorgen stelde over omzetten van int-char
[topic=506317]

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op maandag 27 mei 2002 16:11 schreef Goodielover het volgende:

[..]

Simpel while loopje op de lengte van de nummer-string.
elke keer 3 karakters eraf snoepen en dat dan omzetten naar letter.
Vandaar natuurlijk ook de vraag die hij vanmorgen stelde over omzetten van int-char
[topic=506317]
Dat vroeg ik juist. Staan die tekens vast? Weet je van te voren dat ze 3 tekens lang zijn. Of zijn ze allebei even groot.

Een van de twee moet wel, anders kan het IMHO niet :+
[edit]En dan mention ik nog niet eens dat er waarschijnlijk een waardeloos model achter zit!

Verwijderd

int naar string:
code:
1
2
3
4
5
int int1 = 128, int2 = 64;

char buffer[128];

sprintf(buffer, "%3.3d%3.3d", int1, int2);

string naar int:
code:
1
2
3
4
5
char *buffer = "128064";

int int1, int2;

sscanf(buffer, "%3.3d%3.3d", %int1, &int2);

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

beelzebubu: bedoel je niet
code:
1
sprintf (buffer, "%03d%03d", int1, int2);

(of natuurlijk gewoon "%06d" en int1 * 1000 + int2 :+)

en bij het adres doorgeven van int1 heb je een % gebruikt ipv een & ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 01-02 20:46

dawuss

gadgeteer

Topicstarter
wat houdt

"%03d%03d"

precies in?

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

%d zet een int om naar tekst (de eerstvolgende parameter moet dan een int zijn)
%3d zorgt ervoor dat er altijd minstens 3 tekens geschreven moeten worden, dus vult zonodig aan met spaties
de 0 voor de 3 betekent dat hij niet aangevult moet worden met spaties, maar met 0'en

dus 64 wordt dan ook geschreven als 064

Zie de documentatie over printf voor alle mogelijke specifiers en wat ze doen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 01-02 20:46

dawuss

gadgeteer

Topicstarter
even offtopic, maar hoe krijg je die MSDN collectie geïntegreerd in Visual Studio?
Ik heb een modem, dus ik moet steeds inbellen voor informatie over functies.

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03-09 13:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

installeren vanaf de cd's die bij je legale kopie van visual studio zaten ;)

zonder die cd's kan het volgens mij niet... een MSDN subscriber licentie is geloof ik ongelooflijk duur, maar dan krijg je wel regelmatig updates (voor particulieren niet echt betaalbaar denk ik)

Je kunt de platform SDK gratis downloaden (130mb *D), maar dan heb je alleen de win32 API help, en geen visual studio of C++ specifieke help

misschien is een goed boek een goede optie?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 01-02 20:46

dawuss

gadgeteer

Topicstarter
ja, ik heb destijds f 80,- betaald aan een boek over C++, maar ik ben nu even blut :) dus even geen visual voor mij

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 07-09 08:58
Op maandag 27 mei 2002 16:03 schreef Janoz het volgende:
daarnaast kan een INT nooit 064 bevatten.
Tuurlijk wel -
int i = 064;

std::cout << i;

>:)

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Op dinsdag 28 mei 2002 09:41 schreef MSalters het volgende:

[..]

Tuurlijk wel -
int i = 064;

std::cout << i;

>:)
Ja, en dan moet ik zeker straks gaan uitleggen waarom er 52 wordt afgedrukt...

Je kunt het er wel aan toekennen (wat voor sommigen iets anders oplevert dan ze zouden verwachten), maar aan de int zelf zie je geen verschil tussen wel of geen voorloop nullen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Op maandag 27 mei 2002 20:54 schreef .oisyn het volgende:
beelzebubu: bedoel je niet
code:
1
sprintf (buffer, "%03d%03d", int1, int2);

(of natuurlijk gewoon "%06d" en int1 * 1000 + int2 :+)
Volgens mij geeft 03d en 3.3d in linux hetzelfde resultaat...

Ff testen..
code:
1
2
3
4
5
6
7
8
9
10
11
[28 May 18:09 - rbultje@tux /tmp]# cat test.c
int main()
{
  printf("%3.3d\n", 3);
  printf("%03d\n", 3);
  return 0;
}
[28 May 18:09 - rbultje@tux /tmp]# ./test
003
003
[28 May 18:09 - rbultje@tux /tmp]#
en bij het adres doorgeven van int1 heb je een % gebruikt ipv een & ;)
Ja, ik slaap. :z. ;).
Pagina: 1