[C / C++] String probleem

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

  • DarkSilence
  • Registratie: December 2002
  • Laatst online: 19-12-2025

DarkSilence

W3designer.nl

Topicstarter
Ik kan geen string aanmaken. En ik krijg een heleboel errors bij deze code en ik verwacht eigenlijk wel dat die goed is.
Voor de meeste waarschijnlijk heel simpel, maar voor mij niet ik ben een beetje aan het klooien met C++ in de hoop dat ik het een beetje leer. Ik kan namelijk al in Visual Basic en ASP programmeren en ben opzoek naar een nieuwe uitdaging.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "iostream.h"
#include "string.h"

int menu(void)
{
    string naam;

    cout << "Geef uw voornaam op:" << endl;
    cin >> naam;

    if (naam == "jan") {
        cout << "Hallo jan de Vries";
    }
    
    return 0;
}


De volgende errors krijg ik


--------------------Configuration: stringtest - Win32 Debug--------------------
Compiling...
stringtest.cpp
F:\Programmeren\CPP\stringtest.cpp(6) : error C2065: 'string' : undeclared identifier
F:\Programmeren\CPP\stringtest.cpp(6) : error C2146: syntax error : missing ';' before identifier 'naam'
F:\Programmeren\CPP\stringtest.cpp(6) : error C2065: 'naam' : undeclared identifier
F:\Programmeren\CPP\stringtest.cpp(11) : error C2446: '==' : no conversion from 'char *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
F:\Programmeren\CPP\stringtest.cpp(11) : error C2040: '==' : 'int' differs in levels of indirection from 'char [4]'
Error executing cl.exe.

stringtest.exe - 5 error(s), 0 warning(s)

Wat doe ik fout? Kan iemand mij hier mee helpen. Alvast bedankt. Website op internet geven ook geen duidelijkheid daar gaan ze er van uit als iemand iets in voert dat het dan vast aantal karakters zijn. Ik weet niet van te voren hoe de gene heet duzzz.

W3designer.nl


  • TaXaN
  • Registratie: April 2001
  • Laatst online: 08-09-2023
Het is
code:
1
2
#include <string>
#include <iostream>


Als je quotes gebruikt, wordt er gezocht in de lokale directory (en andere project directories) terwijl nu in de system directories wordt gezocht.

A polar bear is a rectangular bear after a coordinate transformation.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Ach ja, 't is een weetje, maar lastig is 't niet :Y)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • whoami
  • Registratie: December 2000
  • Laatst online: 24-08 16:37
string zal geen bekend datatype zijn denk ik in C++.

string.h bevat wel een aantal string - handling functies, maar voor het datatype 'string' heb je denk ik andere includes nodig.

[edit]
Euh, had phone, en nog niet op submit geklikt.[/sub]

Je zult dus, zoals reeds eerder gezegt, die includes zonder .h nodig hebben.
Of, je kan het ook nog doen mbhv character arrays:

code:
1
2
3
char naam[20];

cin.get (naam);

[ Voor 41% gewijzigd door whoami op 01-02-2003 15:06 ]

https://fgheysels.github.io/


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

[heropend]
mja, dit neigt naar discussie. Imho moet je in C++ zoveel mogelijk de class library gebruiken, en niet terug gaan vallen op C structuren als een character array, helemaal niet als 't om user input gaat (een memory leak/fault ligt om de hoek ;))

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • whoami
  • Registratie: December 2000
  • Laatst online: 24-08 16:37
drm schreef op 01 februari 2003 @ 15:08:
[heropend]
mja, dit neigt naar discussie. Imho moet je in C++ zoveel mogelijk de class library gebruiken, en niet terug gaan vallen op C structuren als een character array, helemaal niet als 't om user input gaat (een memory leak/fault ligt om de hoek ;))


Daar ga ik wel helemaal mee akkoord hoor. ;)
Dat voorbeeldje was enkel maar om aan te tonen wat mogelijk was. ;)

https://fgheysels.github.io/


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23:08
Officieel zitten identifiers als 'string', 'cout' en 'cin' trouwens in de 'std' namespace. Als je 't écht goed wil doen, zet je dus "using namespace std;" boven je code (voor korte programma's die zelf geen namespaces introduceren) of zet je "std::" voor de betreffende identifiers, zodat je "std::string", "std::cout", enzovoorts, krijgt.

  • DarkSilence
  • Registratie: December 2002
  • Laatst online: 19-12-2025

DarkSilence

W3designer.nl

Topicstarter
TaXaN schreef op 01 February 2003 @ 14:58:
Het is
code:
1
2
#include <string>
#include <iostream>
Als je quotes gebruikt, wordt er gezocht in de lokale directory (en andere project directories) terwijl nu in de system directories wordt gezocht.
Als ik de code include gebruik met haakjes <> ipv aanhalingstekens "" geeft hij nog steeds dezelde errors.

W3designer.nl


  • DarkSilence
  • Registratie: December 2002
  • Laatst online: 19-12-2025

DarkSilence

W3designer.nl

Topicstarter
Soultaker schreef op 01 February 2003 @ 16:05:
Officieel zitten identifiers als 'string', 'cout' en 'cin' trouwens in de 'std' namespace. Als je 't écht goed wil doen, zet je dus "using namespace std;" boven je code (voor korte programma's die zelf geen namespaces introduceren) of zet je "std::" voor de betreffende identifiers, zodat je "std::string", "std::cout", enzovoorts, krijgt.
Begrijp ik het goed dat je dan deze onderstaande code krijgt?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/*
#include <string.h>
#include <iostream.h>
using namespace std;
*/

int menu(void)
{
    std::string naam;

    std::cout << "Geef uw voornaam op:" << endl;
    std::cin >> naam;

    if (naam == "jan") {
        std::cout << "Hallo jan de Vries";
    }
    
    return 0;
}


Ik krijg nu 15 errors. :'( Namelijk deze

--------------------Configuration: stringtest - Win32 Debug--------------------
Compiling...
stringtest.cpp
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(5) : error C2871: 'std' : does not exist or is not a namespace
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(10) : error C2653: 'std' : is not a class or namespace name
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(10) : error C2065: 'string' : undeclared identifier
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(10) : error C2146: syntax error : missing ';' before identifier 'naam'
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(10) : error C2065: 'naam' : undeclared identifier
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(12) : error C2653: 'std' : is not a class or namespace name
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(12) : error C2065: 'cout' : undeclared identifier
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(12) : error C2297: '<<' : illegal, right operand has type 'char [21]'
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(12) : error C2065: 'endl' : undeclared identifier
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(13) : error C2653: 'std' : is not a class or namespace name
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(13) : error C2065: 'cin' : undeclared identifier
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(13) : warning C4552: '>>' : operator has no effect; expected operator with side-effect
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(15) : error C2446: '==' : no conversion from 'char *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(15) : error C2040: '==' : 'int' differs in levels of indirection from 'char [4]'
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(16) : error C2653: 'std' : is not a class or namespace name
F:\Programmeren\CPP\Niet werkende code\Tweakers code\stringtest.cpp(16) : error C2297: '<<' : illegal, right operand has type 'char [19]'
Error executing cl.exe.

stringtest.exe - 15 error(s), 1 warning(s)

Weet iemand het probleem of heeft iemand een werkend voorbeeld? Zoadat ik kan achterhalen wat ik fout doe. Alvast bedankt!

W3designer.nl


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 23:08
DarkSilence schreef op 01 februari 2003 @ 16:22:
Begrijp ik het goed dat je dan deze onderstaande code krijgt?
Je moet nog steeds de iostream en string headers includen, zoals TaXaN schreef. Verder moet het ook std::endl zijn. Voor de rest is je code correct. Je kunt trouwens ook prima werken zonder die namespace te specificeren; ik zei het vooral voor de volledigheid.
DarkSilence schreef op 01 February 2003 @ 16:15:
[...]
Als ik de code include gebruik met haakjes <> ipv aanhalingstekens "" geeft hij nog steeds dezelde errors.
Het gaat niet alleen om de <>-haakjes, maar ook om het feit dat je de .h bestandsextentie weg moet laten. Je krijgt dan namelijk een andere header file: "string" is NIET hetzelfde als "string.h"!

[ Voor 34% gewijzigd door Soultaker op 01-02-2003 16:37 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

goed, alsnog dicht.

Kijk eens goed naar je code, en neem de tips van dezen en gene eens goed door. Dit is echt zo moeilijk niet.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1

Dit topic is gesloten.