PDA

View Full Version : C++ problems


Math Is Hard
Jan11-07, 09:48 PM
I wrote a little test program to try to figure out some problems I am having in another program I'm working on.


# 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.

Hurkyl
Jan11-07, 10:03 PM
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.

Math Is Hard
Jan11-07, 10:16 PM
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.

3trQN
Jan12-07, 04:25 AM
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

@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 (http://support.microsoft.com/default.aspx?scid=kb;EN-US;q240015) Maybe of help.

J77
Jan12-07, 04:43 AM
Another point:

Why not use "cin >> name;"

Math Is Hard
Jan12-07, 11:47 AM
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)

You were right. I threw in a couple of getchar(); lines and it behaved.

WRT 1) See here Maybe of help.

aha! I am going down to the school labs and see if they have Visual C++ .net.
Another point:

Why not use "cin >> name;"
'cause Betty Lou or Zsa Zsa might wanna use my program.:wink:

neurocomp2003
Jan14-07, 01:15 AM
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.

Math Is Hard
Jan14-07, 02:08 AM
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!

Hurkyl
Jan14-07, 02:44 AM
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?

neurocomp2003
Jan14-07, 08:21 AM
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?

mr_coffee
Jan15-07, 02:09 AM
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.

markuswhalber
Oct4-08, 12:07 PM
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

skintight
Oct4-08, 09:27 PM
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.