在这篇文章中,我们将了解在C++中暂停程序的不同方法。在这种方法或函数的帮助下,你将能够在执行过程中暂停任何C++程序。
当用户想要输入或读取一些重要数据时,程序就会被用来暂停。不同的暂停方法提供了一些时间,因此用户可以正确地阅读数据或指令,并选择下一个动作。换句话说,暂停()方法使软件更具可读性,更容易使用。
由于C++是最流行和最有用的编程语言,它提供了不同的方法和功能来暂停程序。
下面是一些用于暂停C++程序的方法或函数的列表:
- pause() 函数
- getc()函数
- getchar()函数
pause()函数
pause()函数是一个窗口方法,用于暂停当前执行的程序。这个方法是窗口专用的,除了Windows和DOS之外,在其他任何操作系统上都不能工作。
当暂停()操作被终止时,它继续执行剩余的程序。
暂停()方法暂停正在运行的程序的执行,直到用户按下回车键。
暂停方法如何工作?
当用户调用pause方法时,整个程序代码被暂停。然后,system()函数对操作系统进行了调用。它打开一个shell,在整个库中搜索暂停方法。然后分配资源并执行暂停()方法。然后等待用户输入,操作完成后释放内存。退出并继续执行剩余的程序。最后,显示数据。
语法
system("pause")
优点:
pause()方法很简单,容易理解()。
缺点 :
不能移植,
该方法在Linux和MacOS上不能使用,
需要进行系统调用并占用额外资源。
pause()方法可以用来暂停一个C++应用程序,如下面的示例代码所示。
程序代码
1. //c++ program to pause program by pause() method
2. #include <iostream>
3. #include <cstdlib>
4. using namespace std;
5. int main()
6. {
7. for (int i=0; i<=10; i++)
8. {
9. cout << "i = " << i << endl;
10. if (i == 5) {
11. // Call the pause command
12. cout << "Program Is Paused\n";
13. system("pause");
14. cout << "pause program terminated\n";
15. cout << "Resuming program \n";
16. }
17. }
18. return 0;
19. }
输出 :
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
Program Is Paused
pause program terminated
Resuming program
i = 6
i = 7
i = 8
i = 9
i = 10
解释
这里,当i值等于5时,暂停方法被调用。当用户按回车键终止程序时,恢复的程序被执行。
好吧,让我们再举一个例子,
在这个例子中,我们有一个有特定周期(毫秒)的暂停程序。
程序代码
1. #include <ctime>
2. #include <iostream>
3. void pause(int dur);
4. int main()
5. {
6. std::cout<<"Pausing for 5 second... \n";
7. pause(5);
8. std::cout<<". \n";
9. std::cout<<". \n";
10. std::cout<<". \n";
11. std::cout<<". \n";
12. std::cout<<". \n";
13. std::cout<<"DONE\n";
14. return 0;
15. }
16. void pause(int dur)
17. {
18. int temp = time(NULL) + dur;
19. while(temp > time(NULL));
20. }
输出
Program is pausing for 5 second..
.
.
.
.
.
.
DONE
解释
在这里,为了让程序暂停5秒,我们通过了暂停方法,时间长度为一毫秒。在这里,用户不需要按任何回车键来继续执行。
getchar()
getchar()方法和pause()方法一样,在暂停的C++程序中使用。
getchar()是C++中的一个内置函数,它相当于get(stdin)函数。getchar()方法从标准输入和输出中读取下一个字符。
当用户按下除 "ENTER "以外的任何键时,系统会被暂停。当他按下 "ENTER "时,它接受输入行的字符。
这个暂停不会结束。因此,建议用户在执行暂停操作之前,先阅读所有的数据。
语法:
int getchar(void)。
返回类型 :
这个函数没有任何参数,
它返回一个int值。
程序代码
1. //c++ program to pause program using getchar() method.
2. #include <iostream>
3. #include <vector>
4. #include <thread>
5. #include <chrono>
6. using std::cout;
7. using std::cin;
8. using std::endl;
9. using std::vector;
10. using std::copy;
11. using std::this_thread::sleep_for;
12. using namespace std::chrono_literals;
13. //driver code
14. int main()
15. {
16. int flag;
17. cout << "your program is paused!\n";
18. cout << "Press Enter to continue\n";
19. flag = getchar();
20. cout << "\nContinuing \n";
21. //make sleep program 200ms
22. sleep_for(200ms);
23. cout << "..........\n";
24. cout << "..........\n";
27. //this will print after 200ms or sleep period complete
28. cout << "\nProgram Completed!";
29. return EXIT_SUCCESS;
30. }
输出
your program is paused!
Press Enter to continue
Continuing
..........
..........
Program Completed!
解释:
这里,我们通过getchar()方法来暂停程序。如果用户按下 "ENTER "键,它就会接受所输入行的字符。当睡眠期结束后,铰链程序开始执行。
getc()
getc()也用于暂停一个程序。这个函数存在于标准输入-输出库中。该函数属于C库,
该函数从流中读取下一个字符。
语法 :
getc(FILE *stream)
它是FILE对象的指针,确定了操作的流类型。该流包含三个标准文件流。
- stdin
- stdout
- stderr
其中stdin用于接收从用户键盘上获取的输入。
它使用户等待用户继续执行程序。
程序代码
1. //c++ program to pause program using getc() method.
2. #include <iostream>
3. #include <vector>
4. #include <thread>
5. #include <chrono>
6. using std::cout;
7. using std::cin;
8. using std::endl;
9. using std::vector;
10. using std::copy;
11. using std::this_thread::sleep_for;
12. using namespace std::chrono_literals;
13. //driver code
14. int main()
15. {
16. int flag;
17. cout << "your program is paused !\n";
18. cout << "Press Enter to continue\n";
19. flag = getc(stdin);
20. cout << "\nContinuing .";
21. //make sleep program 50ms
22. sleep_for(50ms);
23. cout << "..........";
24. //this will print after 50ms or sleep period complete
25. cout << "\nDone";
26. return EXIT_SUCCESS;
27. }
输出 :
your program is paused !
Press Enter to continue
Continuing ...........
Done
解释
在这里,我们把get(stdin)作为暂停程序的参数,它与控制台输入相对应。当用户按下回车键时,getc()函数接受它并使程序暂停整个睡眠期。当睡眠期结束时,它将打印完成信息。
让我们检查一下你的知识水平
问题1
以下哪个方法不用于暂停?
pause()
getc(stdin)
getchar()
exit()
在C++中,有许多方法或函数可用于暂停程序。pause(),getchar()等(stdin)是用来暂停程序的。而exit是用来终止C++程序的。
问题2
pause()方法的缺点是什么?
暂停()方法是针对窗口的,并且是可移植的。
暂停()方法对其他操作系统没有用。
暂停方法是一个系统调用,需要分配额外的内存。
以上都是
暂停方法是一个针对窗口的方法,这意味着它不具有可移植性。因为它在Linux或MacOS上不能工作。它进行系统调用,分配额外的资源来执行操作。因此,上述所有操作都是正确的。