menu help

This is a discussion on menu help within the C++ Programming forums, part of the General Programming Boards category; hi, I am trying to take a command input by the user and continue looping until the user types exit ...

  1. #1

    menu help

    hi, I am trying to take a command input by the user and continue looping until the user types exit

    within the loop there are 5 keywords which will send throw control elsewhere

    it works the first time through

    i think the problem is that the strings holding the input are not cleared on subsequent iterations

    i have tried various things with no success

    could someone offer me some suggestions on how to fix this?


    is there (i'm sure there is) a better way in which a beginner (me) can do this with the most basic of skills.


        string str, cmd, titl;         //str entire input
        int loc;                       //cmd first word - determines where to send
        cout << "Enter command: ";     //titl text after cmd
        getline(cin, str);
        loc = str.find(" ", 0);
        //cout << "1st word: " << cmd << endl << "text: " << titl <<endl;
           char c_cmd1[80];                     //convert string to lower
           const char *c_cmd = cmd.c_str();     //  c_cmd(c_style string)
           strncpy(c_cmd1, c_cmd, 79);           // c_cmd1 lowercase
           strlwr(c_cmd1);                      //  c_cmd2 is
           string c_cmd2(c_cmd1);               //converted back to string class
           //cout << c_cmd << endl << c_cmd1 << endl << c_cmd2 << endl;
        if(c_cmd2 == "took")
          //pass to took function, send string title
        else if(c_cmd2 == "clear")
          //pass to clear function, send string title
        else if(c_cmd2 == "list")
            //pass to list function
        else if(c_cmd2 == "advice")
            //pass to advice function
        else if(c_cmd2 == "exit")
        else huh();
    //Function Took
    void took()
     cout << "took" << endl;
    //Function Clear
    void clear()
     cout << "clear" << endl;
    //Function List
    void list()
     cout << "list" << endl;
    //Function Advice
    void advice()
     cout << "advice" << endl;
    void huh()
     cout << "Huh??" << endl;

  2. #2
    after looking at it some more it seems that it only works when there are two words input separated by a space

    when one word is input it crashes

  3. #3
    I think I fixed it,

    added the following if statement:

    if(loc < str.size() )
    but would still like to hear suggestions on improving code if anyone is up for it


Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Checking array for string
    By Ayreon in forum C Programming
    Replies: 87
    Last Post: 03-09-2009, 04:25 PM
  2. Replies: 2
    Last Post: 03-05-2009, 10:25 AM
  3. Another syntax error
    By caldeira in forum C Programming
    Replies: 31
    Last Post: 09-05-2008, 02:01 AM
  4. Constructive Feed Back (Java Program)
    By xddxogm3 in forum Tech Board
    Replies: 12
    Last Post: 10-10-2004, 04:41 AM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21