Help de beginner ;) C++

Pagina: 1
Acties:

  • _soh
  • Registratie: November 2000
  • Laatst online: 31-05 20:14
Hallo beste mensen,
Ik ben net begonnen met c++ maar heb klein probleempje, wat waarschijnlijk nogal simpel is?

Ik wil graag in een MessageBox (tussen de "" !!!!!) een variabele (int) laten weergeven.
Om dit te realiseren moet er dus eerst een conversie plaats vinden van int naar een tekenreeks, weten jullie hoe dit moet. Hier ff een voorbeeltje:


#include <windows.h>

//Entrypoint van een windows programma WinMain
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int nCmdShow)

{
MessageBox(NULL, TEXT("Hallo Windows 98!\nMijn eerste\nWindows programma"), TEXT("Melding"), 65);
return 0;
}

Alvast bedankt,
soh

Lightning_crew


  • krietjur
  • Registratie: Februari 2001
  • Laatst online: 15:56

krietjur

Where am I?

IntToStr() :?

  • _soh
  • Registratie: November 2000
  • Laatst online: 31-05 20:14
Hmmzzz, in de helpfunctie van MS Visual Studio 6 staat nergens iets over IntToStr ? Hoe werkt dat dan?

Lightning_crew


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
code:
1
2
3
int bla = 4;
String henk = "henk";
ShowMessage( henk + bla );

Kan ook, hoewel IntToStr() mooier is

  • eborn
  • Registratie: April 2000
  • Laatst online: 08-09 12:50
Je kunt long en ints via ltoa en itoa omzetten naar 'strings' (character arrays). Ga daar eens mee spelen :)

  • krietjur
  • Registratie: Februari 2001
  • Laatst online: 15:56

krietjur

Where am I?

Converts an integer to an AnsiString.

extern PACKAGE System::AnsiString __fastcall IntToStr(int Value);

Description

IntToStr converts an integer into an AnsiString containing the decimal representation of that number.

Dit komt overigens uit Borland C++ Builder help, geen idee of dat dan ook wel werkt in Visual C++

Maarre is dan dus iets als AnsiString s = IntToStr(12);
(of in jou geval zet je in plaats van de "" gewoon neer InToStr(variabele)

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 01-01 15:26

PrinsEdje80

Holographic, not grated...

En anders kan een
code:
1
static_cast<string>(var)

of
code:
1
static_cast<char *>(var)

ook wonderen doen...

Used to be Down Under... Foto gallery


  • _soh
  • Registratie: November 2000
  • Laatst online: 31-05 20:14
Op woensdag 10 april 2002 10:43 schreef Glimi het volgende:
code:
1
2
3
int bla = 4;
String henk = "henk";
ShowMessage( henk + bla );

Kan ook, hoewel IntToStr() mooier is
Tja, ik wil eigenlijk wel graag van een MessageBox gebruik maken in plaats van ShowMessage, sorry ;-)

Lightning_crew


  • krietjur
  • Registratie: Februari 2001
  • Laatst online: 15:56

krietjur

Where am I?

[off-topic]
En zo leer ik er zelf ook weer allerlei nieuwe maniertjes bij... :D
[/off-topic]

  • _soh
  • Registratie: November 2000
  • Laatst online: 31-05 20:14
Op woensdag 10 april 2002 10:45 schreef krietjur het volgende:
Converts an integer to an AnsiString.

extern PACKAGE System::AnsiString __fastcall IntToStr(int Value);

Description

IntToStr converts an integer into an AnsiString containing the decimal representation of that number.

Dit komt overigens uit Borland C++ Builder help, geen idee of dat dan ook wel werkt in Visual C++

Maarre is dan dus iets als AnsiString s = IntToStr(12);
(of in jou geval zet je in plaats van de "" gewoon neer InToStr(variabele)
Ja weet ik, maar het wordt onderdeel van een zinnetje, bijvoorbeeld
"Hallo mijn leeftijd is *******" en dan moet op de plaats van ******* iets komen te staan begrijp je?

Lightning_crew


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:59
Op woensdag 10 april 2002 10:45 schreef krietjur het volgende:

Dit komt overigens uit Borland C++ Builder help, geen idee of dat dan ook wel werkt in Visual C++
Neen, IntToStr() is VCL - specifiek. (Borland only dus).

Misschien dat de functie itoa() je wel kan helpen.

https://fgheysels.github.io/


  • _soh
  • Registratie: November 2000
  • Laatst online: 31-05 20:14
Op woensdag 10 april 2002 10:44 schreef eborn het volgende:
Je kunt long en ints via ltoa en itoa omzetten naar 'strings' (character arrays). Ga daar eens mee spelen :)
Ja dat had ik gezien ja, maar dat vatte ik niet helemaal, ff kijken wat er ook al weer stond:

char *_itoa( int value, char *string, int radix );

Maar da's ni helememaal de bedoeling ik denk dat van te voren (voordat ie in de MessageBox wordt gezet) ie om gezet moet worden van int naar string en dan binnen de "" een aanroeping moet komen of zoiets, kan dat?

Lightning_crew


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op woensdag 10 april 2002 10:48 schreef _soh het volgende:
Tja, ik wil eigenlijk wel graag van een MessageBox gebruik maken in plaats van ShowMessage, sorry ;-)
Tja wat is het verschil? Het ging je toch om het concateneren? Je kan (in borland) iig gewoon een int aan een string plakken met +

int getal =10;
String bla = "Blablabla" + getal + " nog meer Bla";

[edit]
Verbaast me eig. dat sprintf nog niet genoemd is :)

  • grizzlybear
  • Registratie: Oktober 2001
  • Laatst online: 28-07 10:33
CString str;

int a = 6;

str.Format("Bladieblabla, ik ben %d jaar", a);

MessageBox(str);


itoa e.d. zijn C specifiek en dus niet netjes C++!
Makkelijk zo he!

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:59
Op woensdag 10 april 2002 10:52 schreef _soh het volgende:

[..]

Ja dat had ik gezien ja, maar dat vatte ik niet helemaal, ff kijken wat er ook al weer stond:

char *_itoa( int value, char *string, int radix );

Maar da's ni helememaal de bedoeling ik denk dat van te voren (voordat ie in de MessageBox wordt gezet) ie om gezet moet worden van int naar string en dan binnen de "" een aanroeping moet komen of zoiets, kan dat?
MIsschien dat de Format() function dan wel uitkomst biedt. Ik heb hier zelf geen Help ivm Visual C++ staan, maar kijk er eens naar.

Ik zie net dat ik te laat ben

https://fgheysels.github.io/


  • _soh
  • Registratie: November 2000
  • Laatst online: 31-05 20:14
Op woensdag 10 april 2002 10:54 schreef grizzlybear het volgende:
CString str;

int a = 6;

str.Format("Bladieblabla, ik ben %d jaar", a);

MessageBox(str);


itoa e.d. zijn C specifiek en dus niet netjes C++!
Makkelijk zo he!
Ummmm, waar staat die %d dan voor? haalt die de variabele a (wat er achter staat op)?

Bovendien geeft ie wat foutjes als:

left of '.Format' must have class/struct/union type

die heb ik al vaker gezien..

Lightning_crew


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:59
Die %d wordt vervangen door de inhoud van a.

https://fgheysels.github.io/


  • victorv
  • Registratie: Januari 2002
  • Laatst online: 17-02-2024

victorv

Locallost

C/C++:

char szBuffer[128] = {0};
int nAge = 13;

sprintf(szBuffer, "Ik ben nu %d jaar", nAge);
MessageBox(NULL, szBuffer, "Melding", MB_ICONINFORMATION);


C++ in MFC (Microsoft Foundation Classes):

CString sMsg;
sMsg.Format("Ik ben nu %d jaar", nAge);
AfxMessageBox(sMsg, MB_ICONINFORMATION);

MFC is een class framework van Microsoft (meegeleverd met Visual C++ die het maken van Windows applicaties wat eenvoudiger maakt dan plain Win32/C++.

"Accomplishing the impossible means only that the boss will add it to your regular duties."


  • _soh
  • Registratie: November 2000
  • Laatst online: 31-05 20:14
Op woensdag 10 april 2002 11:18 schreef Sonii het volgende:
C/C++:

char szBuffer[128] = {0};
int nAge = 13;

sprintf(szBuffer, "Ik ben nu %d jaar", nAge);
MessageBox(NULL, szBuffer, "Melding", MB_ICONINFORMATION);


C++ in MFC (Microsoft Foundation Classes):

CString sMsg;
sMsg.Format("Ik ben nu %d jaar", nAge);
AfxMessageBox(sMsg, MB_ICONINFORMATION);

MFC is een class framework van Microsoft (meegeleverd met Visual C++ die het maken van Windows applicaties wat eenvoudiger maakt dan plain Win32/C++.
Hey Sonii!!
Nog bedankt, ik krijg alleen ff een foutmeldinkje:

error C2065: 'sprintf' : undeclared identifier

Weet je hoe dat komt (ik gebruik de MFC niet, want dat wil ik niet). ;-)

Lightning_crew


  • victorv
  • Registratie: Januari 2002
  • Laatst online: 17-02-2024

victorv

Locallost

Voeg het volgende toe bovenaan in de file.
#include <stdio.h>

De functie sprintf() bevindt zich in een library die automatisch wordt gelinkt zodra je de genoemde include file included.

Hint: installeer de MSDN (ca 1.4 GB aan developers informatie) of zoek je antwoorden op http://msdn.microsoft.com

"Accomplishing the impossible means only that the boss will add it to your regular duties."


  • _soh
  • Registratie: November 2000
  • Laatst online: 31-05 20:14
Ik was vergeten <stdio.h> toe te voegen sorry ;-) Hey allemaal bedankt!!!

GREEEETZZZ,
chriz

Lightning_crew


  • _soh
  • Registratie: November 2000
  • Laatst online: 31-05 20:14
[b]Op woensdag 10 april 2002 11:28 schreef Sonii het
Hint: installeer de MSDN (ca 1.4 GB aan developers informatie)
Hehehe, haha dat is grappig, er komt net iemand aanlopen met msdn, 3 cd's ? ;-) ARRRRRR!!!

Lightning_crew


  • victorv
  • Registratie: Januari 2002
  • Laatst online: 17-02-2024

victorv

Locallost

Je hebt niet alles nodig van de MSDN en dat kun je kiezen bij installatie. VB, nah! FoxPro, nah!

Kijk toch eens serieus naar MFC! Als je een Windows applicatie wilt maken, dan heb je dit toch wel wat sneller voor elkaar dan plain Win32/C++...

"Accomplishing the impossible means only that the boss will add it to your regular duties."


  • grizzlybear
  • Registratie: Oktober 2001
  • Laatst online: 28-07 10:33
sprintf e.d. zijn allemaal C en dus niet C++

Je bent nu dus C aan het schrijven en dus niet C++. Je topictitel zegt echter, dat je C++ wil leren.

Ga dus toch maar even kijken naar objecten en naar MFC. Als je alleen maar C wilt gebruiken, mag dat ook, maar met het oog op toekomst, netheid, overdraagbaarheid en leesbaarheid, raad ik aan om over te gaan op C++

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op woensdag 10 april 2002 11:49 schreef grizzlybear het volgende:
sprintf e.d. zijn allemaal C en dus niet C++

Je bent nu dus C aan het schrijven en dus niet C++. Je topictitel zegt echter, dat je C++ wil leren.

Ga dus toch maar even kijken naar objecten en naar MFC. Als je alleen maar C wilt gebruiken, mag dat ook, maar met het oog op toekomst, netheid, overdraagbaarheid en leesbaarheid, raad ik aan om over te gaan op C++
De CString van MFC is absoluut _niet_ overdraagbaar. Nou heb je daar toch weinig mee te maken met als je toch een windows app maakt, maar het is niet (zoals je eerder zei) netjes C++.

Om in standaard C++ een conversie te doen moet je gebruik maken van std::stringstream. Deze werken op dezelfde manier als bv cout of cin, maar werken dan intern ipv met scherm uitvoer/invoer.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-09 00:49
Op woensdag 10 april 2002 11:49 schreef grizzlybear het volgende:
sprintf e.d. zijn allemaal C en dus niet C++

Je bent nu dus C aan het schrijven en dus niet C++. Je topictitel zegt echter, dat je C++ wil leren.

Ga dus toch maar even kijken naar objecten en naar MFC. Als je alleen maar C wilt gebruiken, mag dat ook, maar met het oog op toekomst, netheid, overdraagbaarheid en leesbaarheid, raad ik aan om over te gaan op C++
Nou weet ik redelijk wat de toekomst van C++ is, en ik kan je verzekeren dat in de C++ toekomst nooit getornd wordt aan de bestaande C-compabiliteit. Dus het blijft ook overdraagbaar.

Wat leesbaarheid betreft heb je een goed punt. Maar om dan MFC als de oplossing aan te dragen?

Wat leesbaarheid en toekomst betreft is lexical_cast<> het beste. Niet alle compilers ondersteunen lexical_cast<> met de meegeleverde library, maar je kunt 'm voor alle moderne compilers downloaden van www.boost.org

Code wordt dan bv.
code:
1
boost::lexical_cast<string>( 4 ) + " files gevonden"

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

Pagina: 1