probleem met vector i.o.

Status
Niet open voor verdere reacties.

Biirra

Gebruiker
Lid geworden
25 dec 2009
Berichten
26
hallo, ben bezig met het leren van heel c++ enzo. vooral de game weg, maar nu stuit ik op dit probleem. kheb het al simpel geprobeerd met de erase() funcitie maar dan kan hij de lijst nie doorzoeken.

hoop dat 1 van jullie een betere oplossing weet. een tip mag natuurlijk ook altijd.


Code:
// giving list for gaming 


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    vector<string>::const_iterator iter;
    string addDelGame;
    char addOrDelete;
    
    
    cout << "creating a list of games: \n\n";
    vector<string> gameList;
    gameList.push_back("1.Dragon age");
    gameList.push_back("2.world of warcraft");
    gameList.push_back("3.mass effect 2");
    
    cout << "this is list so far:\n";
    for (iter = gameList.begin(); iter< gameList.end(); ++iter)
        cout << *iter << endl;
    
    
    cout << "\n\ntype 'a' to add a game to the list\n";
    cin >> addOrDelete;
    if (addOrDelete == 'a')
    { 
       cout << "\n\nenter the game you wanna add to your list:\n";
       cin >> addDelGame;
       gameList.push_back(addDelGame); 
    }
    else if (addOrDelete == 'd')
    {
       cout << "\n\nenter the game you wanna delete from the list:\n";
       cin >> addDelGame;
       // hoe krijg ik hier dat het gedelete kan worden??
    }
    else 
         cout << "\n\nyou pressed a wrong key";
    
    
    for (iter = gameList.begin(); iter != gameList.end(); ++iter)
        cout << *iter << endl;
    
        
    
        
    
    cin.ignore(cin.rdbuf()->in_avail()+2);
    return 0;
}
 
Voeg [cpp]#include <cstdlib>[/cpp] toe en dan kan je het zo doen:
[cpp]cout << "\n\nenter the game you wanna delete from the list:\n";
cin >> addDelGame;
int gameNumber = atoi(addDelGame.c_str()) - 1; // zet de string om in een getal en trek er 1 van af
gameList.erase(gameList.begin()+gameNumber); // gameList.begin() is immers het eerste element in de lijst[/cpp]

Al moet je natuurlijk nog wel controles toevoegen om te kijken of datgene wat is ingevoerd een getal is etc.
 
Laatst bewerkt:
dit werkt inderdaad, maar als het goed is zou het ook zonder
[CPP]#include <cstdlib> [/CPP]

moeten kunnen

mocht je het op die manier ook weten :S dan hoor ik het heel graag :D want volges me tut moet het zonder kunnen.
 
Voeg [cpp]#include <cstdlib>[/cpp] toe en dan kan je het zo doen:
[cpp]cout << "\n\nenter the game you wanna delete from the list:\n";
cin >> addDelGame;
int gameNumber = atoi(addDelGame.c_str()) - 1; // zet de string om in een getal en trek er 1 van af
gameList.erase(gameList.begin()+gameNumber); // gameList.begin() is immers het eerste element in de lijst[/cpp]

Al moet je natuurlijk nog wel controles toevoegen om te kijken of datgene wat is ingevoerd een getal is etc.


btw, dit werkt niet geeft een error dat gameList undeclared is. das nie goed zeg maar :P

maar zou het ook graag wille leren zonder de cstdlib.
 
Bij mij werkt het gewoon

[cpp]// giving list for gaming


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
vector<string>::const_iterator iter;
string addDelGame;
char addOrDelete;


cout << "creating a list of games: \n\n";
vector<string> gameList;
gameList.push_back("1.Dragon age");
gameList.push_back("2.world of warcraft");
gameList.push_back("3.mass effect 2");

cout << "this is list so far:\n";
for (iter = gameList.begin(); iter< gameList.end(); ++iter)
cout << *iter << endl;


cout << "\n\ntype 'a' to add a game to the list\n";
cin >> addOrDelete;
if (addOrDelete == 'a')
{
cout << "\n\nenter the game you wanna add to your list:\n";
cin >> addDelGame;
gameList.push_back(addDelGame);
}
else if (addOrDelete == 'd')
{
cout << "\n\nenter the game you wanna delete from the list:\n";
cin >> addDelGame;
int gameNumber = atoi(addDelGame.c_str()) - 1; // zet de string om in een getal en trek er 1 van af
gameList.erase(gameList.begin()+gameNumber); // gameList.begin() is immers het eerste element in de lijst
}
else
cout << "\n\nyou pressed a wrong key";


for (iter = gameList.begin(); iter != gameList.end(); ++iter)
cout << *iter << endl;





cin.ignore(cin.rdbuf()->in_avail()+2);
return 0;
}[/cpp]

Het lijkt overigens ook te werken zonder "cstdlib" te includen, maar ik had verwacht dan een melding van de compiler te krijgen omdat de functie "atoi" in "cstdlib" staat.
 
niet helemaal wat ik zocht maar bedankt :)

lost de vraag wel op.
thx
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan