C/C++ C++ Console Help: Show Output and Close on Enter Key

  • Thread starter Thread starter chrisalviola
  • Start date Start date
  • Tags Tags
    C++
AI Thread Summary
The discussion revolves around how to prevent a console application from closing immediately after execution, specifically using a simple "Hello World!" program in C++. Users suggest methods to keep the console open, such as using `system("PAUSE")`, `getch()` from `conio.h`, or `std::cin.get()`. While some participants recommend `system("PAUSE")`, others strongly advise against it, labeling it a poor practice due to potential security risks and advocating for more reliable alternatives like `getch()` or standard input methods. The conversation also touches on the differences in handling output and termination across various IDEs, emphasizing the importance of using standard libraries and avoiding non-standard practices. There is a consensus that using `std::cin.get()` is the most standard approach, and discussions about the inclusion of `.h` in header files highlight compiler-specific behaviors. Overall, the thread emphasizes best practices in programming while addressing a common beginner issue.
chrisalviola
Messages
80
Reaction score
0
#include <iostream>
using namespace std;

int main ()
{
cout << "Hello World!";
return 0;
}

this would produce an output in the console and then closes it automatically its so fast I can't even see it, I know you can let the console display the output show and close only when you press enter key, how do you do it? using this example code. tnks
 
Technology news on Phys.org
What IDE are you using?

I think adding a line like system("PAUSE"); should help you out.
 
Almost all IDEs have some way of displaying the output screen.
Or you could simply get a character from the keyboard as input before terminating the program. I like using the getch() function (conio.h). Time delay functions are also useful.
 
I searched these answers on the net hope these are correct. basically you just add these to stop the output from exiting automatically, hope its correct

#include <conio.h>

int main()
{
// Your program here

getch();
}

#include <iostream>

int main()
{
// Your program here

std::cin.get();
}

#include <iostream.h>
void main()
{ ... /* your program here */
cin.get();
}
 
There are other ways of doing it, but these should do quite well. Still, you could try to find out how to display the output screen in your IDE.
 
Well, since you're not asking for any input the program is over as soon as it prints hello world. So if you want it to wait for you to press a key you need to tell it to get input from the user.
 
ranger said:
What IDE are you using?

I think adding a line like system("PAUSE"); should help you out.

Dear god no! Please do not do this. This is a terrible, awful hack. This has windows execute the pause program after your program is completed. Don't do this. Here's what I recommend, Start->Run "cmd"; Now change directories to where the compiled .exe is located. Type the name of the program, and watch the magic happen.

Code:
Microsoft Windows [Version 6.0.6000]
Copyright (c) 2006 Microsoft Corporation.  All rights reserved.

C:\Users\Sam>cd Documents

C:\Users\Sam\Documents>cd "Visual Studio 2005"

C:\Users\Sam\Documents\Visual Studio 2005>cd projects

C:\Users\Sam\Documents\Visual Studio 2005\Projects>cd Test

C:\Users\Sam\Documents\Visual Studio 2005\Projects\Test>Test.exe
Pass!

C:\Users\Sam\Documents\Visual Studio 2005\Projects\Test>



Code:
#include <conio.h>

int main()
{
  // Your program here

[B]  getch();[/B]
}

Only if you're using Borland's compiler. Conio.h isn't a standard library.

Code:
#include <iostream>

int main()
{
  // Your program here

[B]  std::cin.get();[/B]
}

This is the most standard way to accomplish what you want.

Code:
#include <iostream.h>
void main()
{ ... /* your program here */
[B]cin.get();[/B]
}

If you're going to go this route, the include should be iostream (Without the .h). Furthermore, you'll need to add std:: before cin, or using std::cin at the beginning of the program. Look up the scope operator for more information.
 
I observed that some codes have the .h on the #include, the .h is suppose to be the library or header file or something, but why is that it works without the .h
 
samgreen said:
Dear god no! Please do not do this. This is a terrible, awful hack. This has windows execute the pause program after your program is completed. Don't do this. Here's what I recommend, Start->Run "cmd"; Now change directories to where the compiled .exe is located. Type the name of the program, and watch the magic happen.

There is nothing wrong with using the pause "program", as you described. I used exactly this when I was using Dev C++. In fact, its recommended by the Dev C++ FAQ. The problem lies not with running pause, but in using system() in the first place. This is why I asked what IDE he's using. As different IDEs have different ways of handling program termination. But obviously something like getch() is a better option.
 
  • #10
chrisalviola said:
I observed that some codes have the .h on the #include, the .h is suppose to be the library or header file or something, but why is that it works without the .h

The files that you may omit the .h from, are the standard files included in your implementation of c++. It is pretty compiler specific, but you can count on using all the STL headers without the .h.

ranger said:
There is nothing wrong with using the pause "program", as you described. I used exactly this when I was using Dev C++. In fact, its recommended by the Dev C++ FAQ. The problem lies not with running pause, but in using system() in the first place. This is why I asked what IDE he's using. As different IDEs have different ways of handling program termination. But obviously something like getch() is a better option.

There is nothing wrong with it in this instance per se, but why teach poor programming practices? System is a very poor implementation. Let us take a hypothetical (albeit far fetched) situation where the program "pause" has been replaced by a virus of the same name. Instead of your program pausing so you can see the results as you expected, you have no executed unintended, malicious code.

http://cpp.codenewbie.com/articles/cpp/1437/systemPAUSE-Page_1.html
 
Last edited by a moderator:

Similar threads

Replies
1
Views
1K
Replies
40
Views
3K
Replies
22
Views
3K
Replies
39
Views
4K
Replies
8
Views
2K
Replies
5
Views
3K
Replies
3
Views
2K
Back
Top