1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

C++ problems

  1. Jan 11, 2007 #1

    Math Is Hard

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    I wrote a little test program to try to figure out some problems I am having in another program I'm working on.

    Code (Text):

    # include <iostream>
    # include <string>
    using namespace std;

    void ahoy(string nameEntered)
    {
        cout << "Ahoy, " << nameEntered << "!" << endl;
    }

    int main()
    {
        string name;
        cout << "enter your name: ";
        getline(cin, name);
        ahoy(name);
        return 0;
    }
     
    I am using Visual C++ 6.
    Problem 1: After I enter keyboard input I have to press enter twice. Why not once? I see this both when I am testing the program in the editor, and also when I run the .exe.
    Problem 2: In the .exe, the window closes so I never see the output from the function. How can I make it pause?
    I haven't dealt with C++ in a couple of years so I may have just forgotten some simple things. :redface: Thanks for your advice.
     
  2. jcsd
  3. Jan 11, 2007 #2

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    When I compile with gcc 3.4.4, I only have to hit enter once. I have more faith that the version compiled with gcc is correct than I do the version compiled by VS.


    OTOH, there's probably a perfectly reasonable explanation for what's going on. I just haven't figured it out yet.

    For problem 2, simply waiting for more input... say cin.get()... will suffice. I suspect your double-enter problem will foil that plan, though. (Though you could do it twice)


    An aside: your argument to `ahoy' should probably be

    const string &nameEntered

    and not

    string nameEntered

    . What you wrote will make a brand new copy of the string object for the ahoy function to use; the alternative I suggested will pass it by reference (and states that ahoy promises not to modify it), so that copies aren't made.
     
  4. Jan 11, 2007 #3

    Math Is Hard

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    hmm.. I actually do need to make modifications to the string in the function of the larger program I am working on. But, if I can do a pass by reference, can I just output the original string in main() after the function has done it's work on it? I get a little confused about what I can do with strings vs. what I can do with char arrays regarding pass by reference.
     
  5. Jan 12, 2007 #4
    WRT 2) you can also run the program from a .bat shortcut using the pause command. This keeps the console window open after the program terminates so you can see the output.

    For example:
    Example test.bat file
    Code (Text):

    @A shortcut that starts your console program and pauses so you read output
    START C:\MYPROGGY\foo.exe
    pause
     
    I assume your using windows, i think you can also do the same by creating a windows shortcut and adjusting the properties options for it.

    WRT 1) See here Maybe of help.
     
  6. Jan 12, 2007 #5

    J77

    User Avatar

    Another point:

    Why not use "cin >> name;"
     
  7. Jan 12, 2007 #6

    Math Is Hard

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    You were right. I threw in a couple of getchar(); lines and it behaved.
    aha! I am going down to the school labs and see if they have Visual C++ .net.
    'cause Betty Lou or Zsa Zsa might wanna use my program.:wink:
     
  8. Jan 14, 2007 #7
    VC++6.0 is awesome, printf is your friend..but i don't get the double enter problem when compilng your code...

    getch() from conio.h is good to use if your on windows...its not a standardized library thogh.
     
  9. Jan 14, 2007 #8

    Math Is Hard

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    My double enter problem vanished when I recompiled in Visual C++.net in the lab. But then that brought me a few new last minute problems to work out. Fortunately I got it all sorted out before the deadline. whew!
     
  10. Jan 14, 2007 #9

    Hurkyl

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    getch() is from conio.h and is nonstandard. getchar() is in stdio.h and is standard. Why would you prefer printf when using C++, though?
     
  11. Jan 14, 2007 #10
    easier to control for , for me anyways. and ... . there's no difference to using native C functions in C++..isn't iostream in C++ based on printf?
     
    Last edited: Jan 14, 2007
  12. Jan 15, 2007 #11
    If your using C++ you should code in C++.... overloading the printf functionis very messy looking compared to overloading cout which is nice and clean.
     
  13. Oct 4, 2008 #12
    Hi all!

    Im markus from finland.I have aproblem (sorry my english is not the best..)

    I try to make program, whic ask numbers, and put thme in different tables. The number of tables comes from user. how can i make code, which make as many tabels as user tell?


    Marksu
     
  14. Oct 4, 2008 #13
    markushwalber:

    what type of numbers are being asked? just integers, decimals (float) , imaginary?

    given a number how should they be formated into tables?

    reply back with more details and i will assist.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: C++ problems
  1. C++ Problem (Replies: 6)

  2. C++ problem (Replies: 3)

  3. Problem infile.get(c) (Replies: 1)

Loading...