C++ Terminal Closes on Enter [duplicate] - c++

This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
How to stop C++ console application from exiting immediately?
Forgive me for my rather extreme newbie-ness in the field of C++ but here goes. :)
When I run say for example this code in a terminal:
int g;
cout << "Please enter an integer value: ";
cin >> g;
cout << "The value you entered is " << g;
...to you C++ experts out there, obviously this accepts a value from the user's input and then displays in the output. However, right after I "submit" my input and click enter, I see the output for a mere millisecond and then the terminal closes. Anyway I could stop the terminal from closing so I could actually have a chance to see the result?
I'm using Visual Studio on Windows 7.
Thanks!

If you're working on Windows, you can add the line system("pause"); at the end of the program.
Or cin.get() if on Linux

Depends on what you're using. For Windows it is common to use a breakpoint (__debugbreak) but for Unix people usually just run it in an existing terminal which does not close.

I don't know what kind of OS do you use, but the function is similary
start a terminal in Linux oder a Commandline in Windows.
Switch with the command "cd" to the directory where the Program lies.
Linux:
./myProgram
Windows
myProgram
The Terminal which you started wouldn't be closed ;)

Related

How can i printing all the cases in vscode console [duplicate]

This question already has answers here:
When I run the code in vs code, the results seem to appear and then disappear quickly, how do I fix this?
(2 answers)
Why does my console application disappear immediately
(7 answers)
Console window disappear immediately [duplicate]
(1 answer)
C++ Setup For VS Code [duplicate]
(1 answer)
Closed 4 months ago.
I don't understand. I wrote a "hello world" program and run it, console only shows up immediately and turns itself off.
You guys can help me please
I want to use vscode console to input the result then print it with the line "press any key to countinue" like DevC++. I want it to not turn itself off when I haven't entered all the cases
After your while loop, add: _getch();
std::cout << "press any key to countinue...";
int c = _getch();
Then the application will wait untill you press a key.
What's happening is when the caSe is zero the application leaves the loop. Then there is no code left and the application exits.
But please remove the second image and replace the first with your code. We love to copy your code to help you out. The programs output you should write out too, although in this case not needed when you write clearly what is happening. And state clearly what you want to do.
Try adding this in the last place.
system("pause");

Windows console closing immediately after running a c++ code [duplicate]

This question already has answers here:
How to stop C++ console application from exiting immediately?
(35 answers)
Closed 5 years ago.
I just started using Visual Studio to write C++ code on Windows 10 and I am using the console application template. My problem is that the console disappears immediately after showing the output of my program even when I simply run a "hello world" example. I tried all kinds of tricks to implement delay but no success.
I usually put a std::cin line just before main returns. This will cause it to wait for input before continuing.
You can do the following( assuming that you are not waiting for user input, in that case you can just follow Rich's answer ) :
Run it in debugging with a breakpoint on the last line before the main returns.
Use a system("pause") at the end before the main returns.( suggesting this just because it's just a hello world program in Visual Studio )
A great way to pause the console in Visual Studios for your purposes is to use system("pause"); Though its not portable to other OS and some anti-virus systems don't like it. For your purposes it should work well and is easy to see what the line does.
Hope this helps.

Alternative to system("PAUSE")? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
I've recently read about how BAD system("PAUSE") is. I tried cin.get() but I don't know how to use it to pause a program. Other posts say to put a breakpoint after the statement. But I have no knowledge on how to do that. Any suggestions on how to pause my program? An example would be really appreciated.
Assuming that you are indeed working on Windows, the worst thing about system("PAUSE") is that it betrays a fundamental misunderstanding of your operating system's architecture. You do not need a code replacement for system("PAUSE"), because the code is the wrong place to solve the perceived problem.
Beginners like to put system("PAUSE") or even a portable alternative like std::cin.get() at the end of a program because otherwise "the window disappears" as soon as the program ends. Such logic, however, is deeply flawed. The window which you probably see while the program runs and which has made you ask this question is not part of the program itself but part of the environment in which the program runs.
A typical console program, however, must not assume details about the environment in which it is executed. You must instead learn to think in more abstract terms when it comes to input and output via std::cout and std::cin. Who says that your program is even visible for a human user? You may read from or write into a file; you may use pipes; you may send text to a network socket. You don't know.
#include <iostream>
int main()
{
std::cout << "Hello world\n"; // writes to screen, file, network socket...
}
Opening a graphical window and displaying text output on the screen is not in the scope of your program, yet using system("PAUSE") assumes exactly that one single use case and breaks all others.
If you use an IDE like Visual Studio and are annoyed by the fact that pressing F5 eventually results in the window disappearing before you have had the chance to see all output, here are three more sensible alternatives than manipulating the program itself:
Demystification. Observe that what Visual Studio really does is invoking the Visual C++ compiler behind the scenes in order to create an *.exe file. Open your own console window with cmd or with Tools > Visual Studio Command Prompt, locate the directory of that *.exe file and run it there (you should eventually also learn to start the compiler without Visual Studio's help, because that will give you a deeper understanding of the C++ build process).
Press CTRL+F5.
Place a breakpoint at the end of your code. Read the documentation if you don't know how.
I got one step closer, cin.ignore, but the user can only press enter if he/she wants to continue.
Example with cin.ignore():
#include <iostream>
int main()
{
cout << "Press enter to continue!\n";
cin.ignore();
//do something
return 0;
}
When you press enter it advances and does whatever you want it to do.

C++ Run and closes when finish? [duplicate]

This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
How to stop C++ console application from exiting immediately?
I'm currently learning C++ and cant figure out how to stop the application from exiting when I want to show the user some data, and have time to read it. How may i do that?
Update: Somehow I pause the application and when the user click a button it exits.
I assume you're on Windows.
This can turn into a long debate, but generally there are two main ways people do it:
(recommended) Add cin.get(); to the end of your program. This will cause your program to stop until the user hits enter, then it will continue and quit.
This will work on Windows and Linux.
Add system("PAUSE"); at the end of your program. This will cause your program to print something like Press any key to continue. . . and when you hit a key, the program will continue and quit.
There is a chance that the PAUSE command doesn't do that and can order pizza, launch the missiles, or something else.
This only works for Windows but you won't need it when you go to linux anyway.
std::cout << "Press enter to exit" << std::endl;
cin.get();
exit(1);
If you want to pause your program until the user presses a key, you can use cin.get(). But really, the program should terminate when it's finished. Otherwise, it's useless in pipelines and the like.
If your program's window goes away when it's finished, then something is wrong with the way you launched it. Whether the window stays when the program is done is up to the thing that launches the program and sets up the window, not the program. This problem is usually caused by launching CLI programs from a GUI. If you want to launch from a GUI, write a GUI program. Otherwise, launch terminal programs from the terminal.
Do not use system("pause");. It makes your program unportable. And if you ever run it on a system whose pause command does something other than what you want, you may have a very angry user on your hands.
Do not use getch. That's a Windows console function and a Curses function. It's not part of C++. (Unless you are specifically developing for a platform that has this function and you are sure it does what you want. But this one function would be a really silly reason to make your program unportable.)

How can I communicate with Command Prompt (CMD) using C++?

I have an application that need to send command to cmd and then get the ouput back (capturing the output). How can this be accomplished using C++ without using any MS Windows specific API? Is there a way that this may be done to be cross platform (for linux terminals for example)?. By the way i'm on win XP SP3.
I actually mean redirecting the input/output. For example, run the command "make" on cmd and then in case of error capturing the error message (redirecting to my application).
As mentioned: if you can avoid launching child processes in your program and instead fit into the broader "toolbox metaphor," that can often be better...
http://en.wikipedia.org/wiki/Unix_philosophy
But if that's not a fit for your project, check out Boost.Process.
Also: if you're using Qt (which is good to look at in any case) there is also QProcess.
Can't you just use the regular cin and cout that C++ provides? (of course if your program is a GUI program, cin and cout won't be connected to anything useful unless you call the Windows AllocConsole() command... but that's just the way Windows works. If you want code that also compiles under Linux, etc, you can put #ifdef WIN32 around that call)
Well the system() function which is part of the C89 and C99 standards is available on Linux and Windows and allows for command execution inside C / C++.
By default, most systems get their standard input from the keyboard, therefore cin is generally expected to get information from the user, although there are many cases where this can be redirected to some other source.
You can do something like:
cout << "How old are you?" << endl;
int age;
cin >> age;