c++ klein probleempje

Status
Niet open voor verdere reacties.

timboiscool

Gebruiker
Lid geworden
27 nov 2008
Berichten
205
hoi lezers ik wil hier niet teveel vragen........
maar hier zit ik toch wel lang mee.

ik wil dus eigenlijk een string variable hebben nu heb ik wat gevonden maar werkt het niet......

en ik gebruik visual studio professional 2010 dus ook visual c++ 2010......





Code:
// hello world!.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}


#include <iostream>

using namespace std;

int main()
{
	char In[10]; 
	char An[10] = "help";


	cout << "typ " << An << endl << endl;

	cin >> In;

	if (In == An)
	{
		cout << "\n\nthis is what you typed: " << In << endl <<endl;

	}

	else
	{
		cout << "\n why didnt you typed help???? cus now you typed: " << In << endl << endl;
	}


	system("pause");

	return 0;
}
 
Het is jammer dat je niet vertelt wat er niet werkt, maar ik neem aan dat de controle "In == An" altijd onwaar is. Dat klopt. Omdat In en An C-strings zijn (char arrays) wordt bij een dergelijke controle niet de inhoud van de arrays vergeleken, maar wordt gecontroleerd of de twee pointers (die naar het begin van de array verwijzen) gelijk zijn. Dit zal dus altijd onwaar zijn.
Om dit op te lossen zal je gebruik moeten maken van strcmp (string compare) voor de vergelijking. Een andere oplossing is om gebruik te maken van de C++ String klasse. Dergelijke strings kan je wel op bovenstaande manier ("In == An") vergelijken.
 
Laatst bewerkt:
Aangezien er in de titel C++ staat, zou ik ook aanraden eens te kijken naar het "string" type:

Code:
#include <string>
#include <iostream>

using namespace std;

int main() {
  string An = "help";
  string In;
  
  getline(cin, In);
  
  if (An == In)
    cout << "You typed help." << endl;
  else
    cout << "You didn't type help." << endl;
}

Edit: Oeps, zie nu pas dat Supersnail dit ook al aanraadde ^^.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan