Toon posts:

[C++] casten van 'const char *' in 'const char'

Pagina: 1
Acties:
  • 37 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb het nu voormekaar om een static const char werkend te krijgen, maar nu heb ik een probleem met het casten van een 'const char *' naar een 'const char'. Bij deze regel:

CSampleDoc::readertmp[CSampleDoc::a] = lpszPathName;

krijg ik de volgende error:

error C2440: '=' : cannot convert from 'const char *' to 'const char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast


Als ik dan wil casten:

reinterpret_cast < const char > ( lpszPathName );
CSampleDoc::readertmp[CSampleDoc::a] = lpszPathName;

Dan krijg ik precies dezelfde error.

Gebruik ik de verkeerde 'cast', of gebruik ik hem verkeerd. Ik heb de MSDN Library gebruikt om de cast te vinden, en volgens mij gebruik ik hem wel goed. Iemand een idee hoe ik dit kan oplossen?

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21-08 18:33
Ik denk dat je nog maar eens wat basiskennis moet opdoen over de C++ datatypen.

Als je een lpszPathName hebt, ga ik ervan uit dat dat een pointer naar een string ( char array ) is.
Jouw readertmp lijk op een array van strings ( char arrays ).

1 Haal het hoofdstuk pointers, arrays en strings uit je C++ boek er nog eens bij.

2 Schrijf je programma zo om dat je gebruik maakt van std::string, want daarbij mag je strings aan elkaar toekennen.

3 Lees de documentatie van strncpy( .... ) maar eens door.

4 All of the above.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
Misschien zou ik dat idd moeten doen, helaas heb ik geen C++ boek (ben er met mijn stage mee bezig).

readertmp[] is nu een static const char, maar voorheen was het een const char *, en deze gaf geen enkel probleem. Volgens mij gaat dat wat jij zegt bij punt 2 niet helemaal op dan.

thx

  • Akerboom
  • Registratie: Juni 2001
  • Laatst online: 29-07 13:20

Akerboom

Codito, ergo sum

Offtopic/
is er op je stage plek geen c++ boek aanwezig? Mogen ze die wel voor je aanschaffen

  • Opi
  • Registratie: Maart 2002
  • Niet online

Opi

Online staan ook tutorials: http://www.cplusplus.com en als ik het goed heb staan er in de FAQ van P&W ook wel een aantal links naar tutorials. :)

Verwijderd

Topicstarter
to opifexM:
thx, kijk ik daar ook ff

to farlane:
strncpy gaat niet werken, omdat ik van te voren niet weer hoe lang lpszPathName is.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 21-08 18:33
Verwijderd schreef op 24 juli 2003 @ 10:55:
to farlane:
strncpy gaat niet werken, omdat ik van te voren niet weer hoe lang lpszPathName is.
Dat is ook niet de bedoeling van die parameter. Die is bedoeld om ervoor te zorgen dat niet teveel karakters worden gekopieerd naar jouw buffer, zodat je een buffer overflow krijgt.

Anywayz, dat gaat toch niet werken als je een const char hebt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Verwijderd schreef op 24 juli 2003 @ 10:55:
to opifexM:
thx, kijk ik daar ook ff

to farlane:
strncpy gaat niet werken, omdat ik van te voren niet weer hoe lang lpszPathName is.
Daar heb je dan toch weer andere functies voor om dat te bepalen?

strlen :?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Opi
  • Registratie: Maart 2002
  • Niet online

Opi

rwb schreef op 24 July 2003 @ 11:01:
[...]


Daar heb je dan toch weer andere functies voor om dat te bepalen?

strlen :?
Hier kan je de meeste functies vinden, die je voor strings kan gebruiken.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Weer de pointer problematiek, weer basic en weer niet een C++ boek gepakt.
Je probeert nu een pointeradres in char te stoppen?

Waarom pak je niet eens een boek (of een tutorial) en ga je daarmee aan de slag. Het mag hopelijk! duidelijk zijn dat je gewoon de achterliggende gedachtes van pointers niet snapt. Ga daar dan aan werken in plaats van ons al jouw problemen te laten oplossen (want zo komt het over!). Wat schiet je nu op? Je weet straks nog steeds niets over pointers omdat je het klakkeloos overneemt en maar wat aanmoddert.
Ik kan je zeggen dat pointers niet geschikt zijn voor mensen die niet zorgvuldig mee omgaan. Voor je het weet zit je met memleaks en een hoop segfaults.

Tja, voor de volledigheid: AUB lezen en volgen!
Pagina: 1

Dit topic is gesloten.